2011-10-23 13 views
0

みなさん、こんにちは!ソケット:特定の条件でBufferedReaderから読み込みおよび/またはPrintWriterに書き込むことができません

シンプルなメッセージングアプリケーションを作成しようとしていますが、大きな問題の解決策が見つかりません。正確には2つの大きな問題があります。ここで

コード:

@Override 
public void run() { 
    String incoming; 
    try { 
     while (true) { 
      if (!connected) 
       break; 
      // READING 
      if (reader.ready() && (incoming = reader.readLine()) != null) { 
       notifier.putCommand(incoming, this); 
       incoming = null; 
      } 

      // WRITING 
      synchronized (messagges) { 
       for (String message : messagges) { 
        System.out.println("SENDING MESSAGE TO CLIENT: " + message); 
        writer.println(message); 
       } 
       messagges.clear(); 
      } 
      writer.println("b"); 
     } 
    } catch (IOException e) { 
     MyLogger.log(e); 
    } 
} 

問題:

  1. 私はBufferedReaderの上の任意のメッセージを読むことができないクライアント(writer.println("b"))に毎回書き込みジャンクテキストは、送信されていない場合それから。そんなことがあるものか?!

  2. クライアント側では、「b」がたくさん表示されますが、(writer.println(message))の文の中には何も送信されません。それは本当に奇妙です。なぜなら、私はサーバーに印刷するので、クライアントにメッセージを送信します。[...]コンソールに表示されますが、メッセージは送信されません。

何が問題なのですか?

答えて

1

バッファリングの仕組みについては、flush()メソッドを使用して、バッファされたライターに実際にデータを送信するように指示する方法を学ぶ必要があります。

関連する問題