2016-05-25 9 views
0

私はアンドロイドアプリを開発中です。アプリはクライアントとして機能しています。サーバーに何らかのデータを連続的に送信しています(半秒ごとにデータを送信します)。サーバーが自分のPCで動作しています。私のアプリから、サーバーが閉鎖されたことをユーザーに通知できるようにするにはどうしたらよいですか?以下は、クライアントからサーバーにデータを送信するために私のコードです:Javaソケットプログラミング:クライアントとサーバーが接続されているかどうかを検出する

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

このコードの後に​​ 'socket'を使い続けているものはありますか? – zapl

+1

[この投稿](http://stackoverflow.com/questions/1390024/how-do-i-check-if-a-socket-is-currently-connected-)を確認してください。私はそれがあなたの質問に答えると思います。この[リンク](http://stackoverflow.com/questions/865987/do-i-need-to-heartbeat-to-keep-a-tcp-connection-open)expounds。 – caburse

+0

はい、私はout.println()を使用してメッセージを送信し続けます。私は半分ごとにメッセージを送信し続ける別のスレッドでこれを行います。 –

答えて

1

PrintWriterツバメの例外。ネットワーキングコードでは使用しないでください。 BufferedWriterを使用してください。サーバーが切断された場合は送信時に例外が発生しますが、TCPバッファリングのためにすぐには発生しません。

+0

@EJP –

+0

いくつか送信した後。送信頻度、タイマー、内部タイマーによって異なります。簡単な答えはありません。 – EJP

関連する問題