2016-05-25 1 views
0

Ich arbeite an einer Android-App. Die App fungiert als Client. Es sendet kontinuierlich Daten an einen Server (sagen wir nach jeder halben Sekunde). Der Server läuft auf meinem PC. Wie kann ich von meiner App aus feststellen, dass der Server geschlossen wurde, sodass ich den Benutzer darüber informieren kann? Unten ist mein Codedaten vom Client zum Server zu senden:Java-Socket-Programmierung: Erkennen, ob Client und Server verbunden sind

Ausnahmen
Socket socket = null; 
PrintWriter out = null; 
try { 
    socket = new Socket(ip, PORT); 
    out = new PrintWriter(socket.getOutputStream(), true); 
    out.println(myMessage); 
} 
catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

Gibt es irgendetwas nach diesem Code, der weiterhin den 'Socket' verwendet? – zapl

+1

Überprüfen Sie [diesen Beitrag] (http://stackoverflow.com/questions/1390024/how-do-i-check-if-a-socket-iscurrent-lyconnected-). Ich denke, es beantwortet deine Frage. Diese [link] (http://stackoverflow.com/questions/865987/do-i-need-to-heartbeat-to-keep-a-tcp-connection-open) erläutert. – caburse

+0

Ja, ich sende weiterhin Nachrichten mit out.println(). Ich mache das in einem anderen Thread, der nach jeder halben Sekunde Nachrichten sendet. –

Antwort

1

PrintWriter Schwalben. Verwenden Sie es nicht im Netzwerkcode. Verwenden Sie BufferedWriter. Sie erhalten eine Ausnahme beim Senden, wenn der Server die Verbindung getrennt hat ... aber nicht sofort, aufgrund der TCP-Pufferung.

+0

@EJPIst nicht sofort, nach wie lange? –

+0

Nach ein paar sendet. Es hängt davon ab, wie oft Sie senden, wie viel und interne Timer. Keine einfache Antwort. – EJP