In Android, wie kann ich einen Socket trennen?

8

Ich habe also einen Socket, der mit einer externen Webadresse verbunden ist und wenn er eine bestimmte Nachricht erhält, sollte er die Verbindung trennen. Ich habe versucht, socket.close() aufzurufen, aber socket.isConnected() ist immer noch wahr. Kein Glück auf der Suche nach einer Antwort

    
user2312638 23.08.2013, 15:31
quelle

4 Antworten

4

isConnected() sagt Ihnen nur, ob Sie eine Verbindung zu einem Socket erfolgreich hergestellt haben. isClosed() sagt dir, ob du close() aufgerufen hast.

Sieh dir diese Antwort der Jungs Ссылка

an     
Nick 23.08.2013 16:34
quelle
0

probiere

aus %Vor%

Liefert einen Boolian, ob dieser Sockel geschlossen ist. Verweisen Sockets

    
user1743673 23.08.2013 16:38
quelle
0
  

"Wenn Sie Socket () verwenden, das Sie scheinbar übersehen haben,   Socket.isConnected () teilt Ihnen mit, ob Socket.connect () existiert   angerufen oder nicht. Ähnlich für isClosed () und close ().

     

Verwirrung über diese Methoden resultiert aus der Verwirrung des   Buchse, die von der Anwendung gesteuert wird, mit dem Status   der gesamten Verbindung, die unter der Kontrolle des Protokolls ist.   isConnected () und isClosed () sagen, was Sie mit dem Socket gemacht haben.   Es gibt keine anderen APIs als Lesen und Schreiben zum Bestimmen des Status   der Verbindung. "

Oracle-Dokumentation & lt ; Hier ist es gut erklärt, dass, wenn Sie .close() aufrufen, die Verbindung geschlossen ist und Sie nach isClosed() suchen können.

.close () :

  

Schließt diesen Socket.

     

Jeder Thread, der momentan bei einer E / A-Operation an diesem Socket blockiert wird, wird   Werfen Sie eine SocketException.

     

Sobald eine Steckdose geschlossen wurde, ist sie nicht mehr verfügbar   Netzwerknutzung (d. h. kann nicht erneut verbunden oder wiederhergestellt werden). Ein neuer Sockel   muss erstellt werden.

    
Ahmed Ekri 23.08.2013 16:41
quelle
0

Ссылка

Führen Sie eine Prüfsumme der zurückgegebenen Daten aus, stellen Sie sicher, dass Sie den richtigen Wert erhalten. Wenn ja und du nah angerufen und alles versucht hast, sollte alles in Ordnung sein.

Sie könnten in einem Debugger sehen und sicherstellen, dass nichts undicht ist.

    
Tim Spann 23.08.2013 16:50
quelle

Tags und Links