2016-08-08 9 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); 
       } 

Ich verwende den obigen Code in einem Thread für den Empfang von Antworten von Socket-Verbindung.
In Android funktioniert es richtig, wie ich out.println() für das Senden von Daten verwendet, aber wenn das Gerät mit ios verbunden ist und beginnt, Daten zu empfangen, kann es das Ende nicht identifizieren und wird nur empfangen, wenn die Verbindung geschlossen ist. Gibt es andere alternative Methoden als readLine() und wie in dem obigen Code zu verwenden.lesen Ende der Antwort in Java readLine()

+0

Werfen Sie einen Blick auf [wie Ende Input in Java identifizieren] (http://stackoverflow.com/a/5562415/4935567) und ich denke, Ihr Problem zu lösen. –

Antwort

3

Das würde besser funktionieren.

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

ty für die Hilfe. –