2016-08-08 4 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() 이외의 대체 방법이 있으며 위의 코드에서 사용하는 방법이 있습니까?readLine()에서 응답 읽기 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

도움을 청합니다. –