/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Overførsel af bytes vha Datagram
Fra : Lancelot


Dato : 20-02-02 23:11

Jeg har en fil test.txt, som jeg
forsøger at overføre via udp (datagram).

På serversiden specificerer jeg en
InetAddress, DatagramSocket og en
DatagramPacket, der kan modtage vha receive.
Så kan jeg få modtageradressen.

På clientsiden det samme, bare send
istedet for receive.Jeg bruger localhost

Jeg specificerer endnu en DatagramPacket
til at sende et datagram til client,

min kode på serversiden ser nogenlunde således ud:

public void put_file()
{
try


DatagramSocket dSocket=new DatagramSocket(251);
System.out.println("Waiting for client requests");

while(true)
{
System.out.println("Client contacted me");
System.out.println("receiving client request");
inPacket=new DatagramPacket(buffer, buffer.length);
dSocket.receive(inPacket);

addr=inPacket.getAddress(); // addr for reply packet
inFile=new BufferedReader(new FileReader("test.txt"));
buffersize=inFile.read();
System.out.println("handling request");

outPacket=new DatagramPacket(buffer,buffer.length,addr,250);
System.out.println("sending packet to client");
dSocket.send(outPacket);
}


}
catch (Exception e)
{ System.err.println("Closing DatagramSocket");
if (dSocket!=null)
dSocket.close();
}
}


jeg kan ikke se fejlen helt

Hjælp?

på klientsiden:

public void get_file()
{
try

FileOutputStream fos=new FileOutputStream("testen.txt");
// Create datagram socket
DatagramSocket dSocket=new DatagramSocket(250);
// Get inet addr of server
InetAddress addr=InetAddress.getByName(myHost);
outPacket=new DatagramPacket(buffer, buffer.length, addr, 251);
System.out.println("sending outpacket on datagram socket");
dSocket.send(outPacket);
System.out.println("creating inpacket");
inPacket = new DatagramPacket(buffer, buffer.length);
System.out.println("receiving inpacket on datagramsocket");
dSocket.receive(inPacket);
buffer = inPacket.getData();
fos.write(buffer, 0, buffer.length);
System.out.println("writing file to disk");
fos.close();
}

catch(Exception e)
{ System.err.println(e); }


}



 
 
Frederik Hansen (22-02-2002)
Kommentar
Fra : Frederik Hansen


Dato : 22-02-02 07:03

Hej Lancelot

Men hvad er din fejl? Kommer hele filen ikke igennem, bliver den ikke
overført rigtigt, eller hvad?

(Jeg kan allerede afsløre, hvis du ikke ved det allerede, at hvis filen
ikke bliver overført helt, eller rigtigt, så er det netop styrken ved UDP)

Lancelot wrote:

> Jeg har en fil test.txt, som jeg
> forsøger at overføre via udp (datagram).
>
> På serversiden specificerer jeg en
> InetAddress, DatagramSocket og en
> DatagramPacket, der kan modtage vha receive.
> Så kan jeg få modtageradressen.
>
> På clientsiden det samme, bare send
> istedet for receive.Jeg bruger localhost
>
> Jeg specificerer endnu en DatagramPacket
> til at sende et datagram til client,
>
> min kode på serversiden ser nogenlunde således ud:
>


--
Venlig hilsen

Frederik Hansen

Sun Certified Programmer
for the Java(tm) 2 Platform

email : frederik@roirex.dk
www : www.roirex.dk


Lancelot (22-02-2002)
Kommentar
Fra : Lancelot


Dato : 22-02-02 16:13


Jeg ved godt at det er usikkert med UDP (connectionless) lækkert -
men jeg har ikke forsøgt at implementere en filoverførsel vha datagram...

Jeg har lavet en "hello client/server world", det virker med en string,
man skal bare "getBytes()" på strengen, men i dette tilfælde ville
jeg overføre bytes ad gangen .. jeg tror det kan lade sig gøre vha
en ByteArrayInput/outputstream...



"Frederik Hansen" <frederik@roirex.dk> wrote in message
news:3C75DF07.1000709@roirex.dk...
> Hej Lancelot
>
> Men hvad er din fejl? Kommer hele filen ikke igennem, bliver den ikke
> overført rigtigt, eller hvad?
>
> (Jeg kan allerede afsløre, hvis du ikke ved det allerede, at hvis filen
> ikke bliver overført helt, eller rigtigt, så er det netop styrken ved UDP)
>
> Lancelot wrote:
>
> > Jeg har en fil test.txt, som jeg
> > forsøger at overføre via udp (datagram).
> >
> > På serversiden specificerer jeg en
> > InetAddress, DatagramSocket og en
> > DatagramPacket, der kan modtage vha receive.
> > Så kan jeg få modtageradressen.
> >
> > På clientsiden det samme, bare send
> > istedet for receive.Jeg bruger localhost
> >
> > Jeg specificerer endnu en DatagramPacket
> > til at sende et datagram til client,
> >
> > min kode på serversiden ser nogenlunde således ud:
> >
>
>
> --
> Venlig hilsen
>
> Frederik Hansen
>
> Sun Certified Programmer
> for the Java(tm) 2 Platform
>
> email : frederik@roirex.dk
> www : www.roirex.dk
>



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste