0

こんにちは、皆さん!

シンプルなメッセージング アプリケーションを作成しようとしていますが、大きな問題の解決策が見つかりません。正確には、大きな問題が 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. クライアントに毎回ジャンク テキストを書き込まない(writer.println("b"))と、BufferedReader から送信されたメッセージを読み取ることができません。そんなことがあるものか?!

  2. クライアント側では、多くの「b」しか表示されませんが、ステートメント内で送信されたものはすべて(writer.println(message)). サーバーに SENDING MESSAGE TO CLIENT: [...] と印刷すると、コンソールに表示されますが、メッセージは送信されません。

何が問題なのですか?

4

1 に答える 1

1

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

于 2011-10-23T12:21:42.373 に答える