2016-05-05 3 views
2

Wenn zwei (oder mehr) Clients mit dem Server verbunden sind, wird die Verbindung getrennt, wenn ich logout für einen der Clients drücke. Die anderen Clients erhalten jedoch "null" gedruckt auf ihre Textbereich (e) unendlich, so druckt es "null" ohne zu stoppen."Null" wird unendlich gedruckt, wenn sich der Client vom Chat-Programm abmeldet

public void run(){ 
     if (socket != null && reader != null) { 
      try { 
       String in; 
       while (keepGoing){ 
        try{ 
         in= reader.readLine(); 
         send(in+"\n"); 
        } 
       } 
      } 
     } 
    } 

Hinweis: dies ist kein Fehler, sondern ein Fehler, so erhalte ich keine Ausnahmen.

+0

Klingt wie 'reader' den eingehenden Buchse Strom verbunden ist, der geschlossen wird, so' readline() gibt 'null', die Sie dann auf dem Ausdruck sehr nächste Zeile. Sobald 'null' zurückgegeben wurde, hat es keinen Sinn mehr, zurück zu 'readLine()' zu wiederholen - das Ende des Streams wurde gefunden. – AJNeufeld

+0

@AJNeufeld Du meinst den 'socket! = Null' Teil? Ich kommentierte diese "wenn" -Aussage (nur die Bedingung, nicht die ganze Sache) und ich bekomme immer noch den Fehler. – Guest1235

Antwort

2

so etwas wie die folgenden Schritte aus:

while (messageLoop){ 
    try{ 
     messageInput = reader.readLine(); 

     if(messageInput == null) break; 

     sendMessage(messageInput+"\n"); 

    } 
    catch(SocketTimeoutException ste){ 
     Thread.yield(); 
    } 
} 
0

Es liegt daran, dass Sie von dem Leser zu lesen sind unendlich, auch wenn nichts da ist lesen gelassen. Sie können Folgendes zu korrigieren, den Code tun:

public void run(){ 
    if (socket != null && reader != null) { 
     try { 
      String in; 
      while (keepGoing){ 
       if(reader != null){ 
        try{ 
         in= reader.readLine(); 
         send(in+"\n"); 
        } 
        catch(Exception e){ 
         //Exception thrown, do something about it 
        } 
       } 
       else{ 
         // nothing to read, do something else 
       } 
      } 
     } 
    } 
} 
Verwandte Themen