/ 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
Klienten "hænger" under datagram overførse~
Fra : cg


Dato : 22-05-02 22:36

Jeg har 2 klasser - en server og en klient,
serveren overfører en fil til klienten via udp (jeg bruger
datagrammer).

Når jeg kontakter serveren fra klienten går det fint -
serveren afkoder beskeden og foretager sig noget ud fra
den besked den har fået - er det den ene besked sendes
den ene fil, er det den anden besked sendes den anden fil.

Det ser således ud:

byte[] operationbuffer=new byte[20];
System.out.println("Waiting for client requests on port =
"+server_Socket.getLocalPort());
inPacket=new DatagramPacket(operationbuffer, operationbuffer.length);
server_Socket.receive(inPacket);//modtag pakke
addr=inPacket.getAddress();//modtag svar adresse
operationbuffer=inPacket.getData();//modtag pakke i bytearray
String resp=new String(operationbuffer,0,inPacket.getLength());
System.out.println("received command : "+resp);
if (resp.equals("t.gif")||resp.equals("sw22.jpg"))
{
this.sendFile(resp);

Her er ingen problemer....

Når klienten modtager filen (Det er sendfile metoden der sørger for det),
modtages filen fint nok, men klienten hænger og jeg er nødt til manuelt at
lukke dos vinduet før jeg kan fortsætte. Det jeg gerne vil, er at når
filen er overført skal jeg kunne blive ved - også at overføre den samme
fil. Jeg går ud fra at det har noget at gøre med den måde jeg checker for
end of file!

Det er et eller andet sted her det går galt : se nedenfor:

fos=new FileOutputStream("downloaded/"+local);
int d=-1;
int count=0;

inPacket=new DatagramPacket(receivebuffer, receivebuffer.length);
String str=new String(receivebuffer,0,inPacket.getLength());
do
{

if (str.equals("no"))
{message.setText("File not found");
break;
}
else {message.setText("transfering file");}
clientsocket.receive(inPacket);

System.out.println("writing "+count+" k from buffer to file");

d=inPacket.getLength();

for (int i=0;i<receivebuffer.length;i++)
{fos.write(receivebuffer[i]);
fos.flush();}
count++;
} while (receivebuffer.length>1);

men hvad kan det være??

tak!

cg



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

Månedens bedste
Årets bedste
Sidste års bedste