|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
[JAVA] socket
Ho fatto questo semplice programma:
Codice:
import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class SocketTest { private ServerSocket server; public SocketTest(int port) { try { server = new ServerSocket(port); } catch (IOException ex) { ex.printStackTrace(); } waitingForConnection(); } public void waitingForConnection() { while (true) { try { Socket sock = server.accept(); System.out.println("Socket connesso"); } catch (IOException ex) { System.err.println("Errore su un'operazione di I/O"); } } } } come mi accorgo (da Server) di quando questo (il client) termina la sua esecuzione, o si disconnette??? ps: pensavo che questa situazione si gestisse dal catch ma non và.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
up!
nessuno sa aiutarmi?
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Dipende da come implementi il server, comunque di solito nel caso di disconnessione del client, lato server hai un'exception che tratti nel blocco catch.
Un semplice esempio: link
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
Faccio un esempio: ho un server che rimane in ascolto su una porta...un client si connette a quella porta, e dopo un pò di tempo di disconnette ed il server è sempre in ascolto. Non decido io la disconnessione da programma, ma il client (da remoto)...che ne so, "cade la connessione"!
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Quote:
Codice:
finally { System.out.println ("Connessione chiusa"); client.close (); }
__________________
Il sole è giallo Ultima modifica di yorkeiser : 08-03-2007 alle 10:13. |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
ricevuto!
è che quando ho postato era ancora mattina presto ![]() in pratica mi manca il finally, ho capito bene?? (premetto che al momento non ho l'sdk sotto mano) ma allora mi chiedo...perchè la stampa del catch non viene eseguita? che io sappia per eseguire il blocco finally deve essere eseguito prima il relativo (o uno tra i relativi) blocco catch...oppure sto ancora dormendo adesso??? ![]()
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
![]() Dal tutorial della Sun: "The finally block always executes when the try block exits."
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
sono io che non riesco a spiegarmi bene
![]() ora ti faccio l'esempio più terra terra che mi viene in mente... Ho il server di cui sopra che se ne sta bello bello in esecuzione...ora provo con il telnet (tanto per farti capire che non devo necessariamente aspettarmi una connessione da un client scritto in java...) a connettermi alla porta su cui il server sta in ascolto. la connessione è attiva, il telnet non termina l'esecuzione! e se gestissi da server l'inputStream del socket potrei vedere tutto quello che scrivo sul terminale telnet! ora chiudo il telnet, che ne sò, killo il processo da task manager! come devo fare per accorgemene dal server che il client non sta più in linea?? [MODIFICA]Non sarà mica che il finally che mi hai postato non funziona perchè non processo l'inputStream????dubbio atroce!!![/MODIFICA] spero di aver chiarito un pò la situazione. Grazie per tutte le risposte.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" Ultima modifica di Oceans11 : 09-03-2007 alle 13:55. Motivo: [update] |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:27.