Chiudere definitivamente una connessione

di il
1 risposte

Chiudere definitivamente una connessione

Salve a tutti,

vorrei qualche chiarimento riguardo le socket

Allora io ho una classe che estende Thread dove nel run ho il seguente codice:
ServerSocket server=null;
try {
server=new ServerSocket("160.0.0.0", 1, 3333);
Socket s=server.accept();

DataOutputStream out=new DataOutputStream(s.getOutputStream());
DataInputStream in=new DataInputStream(s.getInputStream());
while(true) {
System.out.println(in.readUTF());
out.writeUTF("ricevuto");
}

catch(IOException) {
e.printStackTrace();
}
finally {
try {
server.close();
s.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
un'altra classe invece(Sempre estendendo Thread ha nel run)
Socket client=null;
try {
client=new Socket("160.0.0.0", 3333);

DataOutputStream out=new DataOutputStream(client.getOutputStream());
DataInputStream in=new DataInputStream(client.getInputStream());
while(true) {
out.writeUTF("inviato");
System.out.println(in.readUTF());
}

catch(IOException) {
e.printStackTrace();
}
finally {
try {
client.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
quello che vorrei sapere è:

Se termino l'applicazione dal quadratino rosso di eclipse i socket si chiudono?
Come faccio ad essere sicuro che non c'è più nessun legame tra il client è il server?

1 Risposte

  • Re: Chiudere definitivamente una connessione

    xneo ha scritto:


    Se termino l'applicazione dal quadratino rosso di eclipse i socket si chiudono?
    Come faccio ad essere sicuro che non c'è più nessun legame tra il client è il server?
    In generale, se la JVM termina (anche "brutalmente" es. kill da task manager), sicuramente il sistema "recupera" e libera le risorse native legate al socket. Quindi certamente la connessione cade.
Devi accedere o registrarti per scrivere nel forum
1 risposte