2013-08-23 19 views
8

Quindi ho un socket connesso a un indirizzo Web esterno e quando viene visualizzato un determinato messaggio, è necessario disconnettersi. Ho provato a chiamare socket.close() ma socket.isConnected() è ancora vero. Nessuna fortuna alla ricerca di una rispostaIn Android, come si disconnette un socket?

risposta

4

isConnected() dice solo se hai effettuato una connessione riuscita a una presa. isClosed() ti dice se hai chiamato close().

Guarda cosa ragazzi risposta https://stackoverflow.com/a/3701249/2453771

+0

Ok quindi la prossima domanda è la chiamata chiudi chiudi la connessione? E se no, cosa succederà? – user2312638

+0

Chiamando 'close()' chiude il tuo lato del socket. Tuttavia, al server non viene notificato che hai chiuso il socket. – Nick

0

provare

socket.isClosed() 

Restituisce un boolian, se questo socket è chiuso. Suggerire Sockets

0

"Quando si utilizza Socket(), che ti sembra di aver trascurato, Socket.isConnected() indica se Socket.connect() è stato chiamato o no. Allo stesso modo per isClosed () e close().

confusione su questi metodi si ottiene da confondere lo stato della presa , che è sotto il controllo della domanda, con lo stato del collegamento complessivo, che è sotto il controllo del protocollo isConnected() e isClosed() dicono cosa avete fatto la presa. Non esistono API diverse da leggere e scrivere per determinare lo stato della connessione."

Oracle documantion < qui è ben spiegato che una volta che si chiama .close() la connessione viene chiusa e si può controllare da isClosed().

.close():

chiude questa presa

.

Qualsiasi thread attualmente bloccato in un'operazione I/O su questo socket eseguirà un SocketException per .

Una volta che una presa è stata chiusa, non è disponibile per ulteriori uso di rete (cioè non può essere ricollegato o rimbalzo). È necessario creare una nuova presa .