Avatar billede dynamotermostat Nybegynder
06. november 2002 - 14:10 Der er 5 kommentarer og
1 løsning

Holdbarheden på en socketforbindelse

Hvordan kan det være at jeg kun for svar fra serveren en gang i dette program?


FileInputStream f= new FileInputStream("ikkeSendtData.ser");
ObjectInputStream s= new ObjectInputStream(f);
ikkeSendtData= (ArrayList)s.readObject();
System.out.println(ikkeSendtData.size());
ikkeSendtData.add(obj);
           
Socket socket = new Socket(ipToSendTo,portnr);
socket.setSoTimeout(3000);
while(ikkeSendtData.size()>1)
{
//Socket socket = new Socket(ipToSendTo,portnr);
//socket.setSoTimeout(3000);
       
ObjectOutputStream output = new ObjectOutputStream
  (socket.getOutputStream());
output.writeObject(obj);
output.flush();
ObjectInputStream inFromServer = new ObjectInputStream
  (socket.getInputStream());
inFromServer.readObject();
ikkeSendtData.remove(0);
System.out.println(ikkeSendtData.size());
}
//Socket socket = new Socket(ipToSendTo,portnr);
//socket.setSoTimeout(3000);
           
ObjectOutputStream output = new ObjectOutputStream
  (socket.getOutputStream());
output.writeObject(obj);
output.flush();
ikkeSendtData.remove(0);
ObjectInputStream inFromServer = new ObjectInputStream
(socket.getInputStream());
meddelelse = (BeskedObject)inFromServer.readObject();
socket.close();


Hvis jeg istedet benytter de 2 Socketkonstruktøre jeg har inaktiveret, virker det fint.
Avatar billede dsj Nybegynder
06. november 2002 - 14:23 #1
Din kode er temmelig forvirrende...

Hvis du prøver at binde to socket's til samme port, vil det ikke lykkes for nummer to. Derfor skal du lukke den første socket før du åbner den anden. Definerer du derimod ikke nogen port, finder din socket selv en ledig port og der er ikke nogen port-konflikt.
Avatar billede dynamotermostat Nybegynder
06. november 2002 - 14:27 #2
Jeg binder kun en socket.
Socket socket = new Socket(ipToSendTo,portnr);
Avatar billede dsj Nybegynder
06. november 2002 - 14:54 #3
gør koden lidt mere overskuelig... hvad for en server... og alle tre socketkonstruktører er da ens ?

Men tak for pointene :)
Avatar billede dynamotermostat Nybegynder
06. november 2002 - 14:58 #4
Kun den øverste er aktiveret.
De to andre er deaktiveret, derfor de to // foran
Avatar billede dynamotermostat Nybegynder
06. november 2002 - 15:05 #5
Det var serveren det var galt med
Avatar billede dsj Nybegynder
06. november 2002 - 15:09 #6
hehe ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester