2016-08-08 12 views
1
try { 
        input = new BufferedReader(new InputStreamReader(
          mSocket.getInputStream())); 
        while (!Thread.currentThread().isInterrupted()) { 
         String messageStr = null; 
         messageStr = input.readLine(); 
         if (messageStr != null) { 
          updateMessages(messageStr, false); 
         } else { 
          break; 
         } 
        } 
        input.close(); 
       } catch (IOException e) { 
        Log.e(CLIENT_TAG, "Server loop error: ", e); 
       } 

私はソケット接続からの応答を受け取るためのスレッドで上記のコードを使用しています。
データを送信するためにout.println()を使用したため、Androidが正常に動作しますが、デバイスがiosに接続され、データの受信を開始すると、端末を識別できず、接続が閉じられたときにのみ受信されます。 readLine()以外の方法があり、上記のコードでどのように使用するのですか?javaでの応答の終わりを読むreadLine()

+0

[Javaの入力ストリームの終わりを特定する方法](http://stackoverflow.com/a/5562415/4935567)をご覧ください。あなたの問題を解決すると思います。ヘルプのために –

答えて

3

これはうまくいくはずです。

try 
{ 
    input = new BufferedReader(new InputStreamReader(mSocket.getInputStream())); 
    String messageStr = ""; 
    while (!Thread.currentThread().isInterrupted() && (messageStr = input.readLine()) != null) 
    { 
     updateMessages(messageStr, false); 
    } 
    input.close(); 
} catch (Exception e) { 
    Log.e(CLIENT_TAG, "Server loop error: ", e); 
} 
+0

タイ。 –

関連する問題