1

マルチスレッド チャット クライアント サーバー アプリケーションを作成しています。サーバー接続では、PrintWriter の println(String s) メソッドを使用して、クライアントへの応答を書き込みます。

PrintWriter out;
String msg = in.readLine();
String response = "";
if (msg.startsWith("nick: ") {
    response = protocol.authenticate(msg); //returns a String that says "welcome " + nick
    //if there are messages pending for the author who logged in add them to the response String
         response+="\r\n"+textmsg;
} else { ... }
out.println(response);

BufferedReader readLine() メソッドを使用してサーバーから読み取るクライアントを実行すると、ウェルカム メッセージは表示されますが、クライアントの保留中のメッセージは表示されません。

response+=textmsg;

\r\n を使用しているためだと思いますが、これら 2 つのメッセージの間に新しい行を出力する必要があります。私は何をすべきか?

回答を受け入れた後に編集します。最終的に、OutputStream と InputStream を使用することを選択したので、\r\n を使用しても、必要なあらゆる種類の文字列を送信できます。

4

2 に答える 2

1

println出力の各行に対して1回(つまり2回)呼び出すか、を使用\nせずに、のみを使用し\rます。これはJavaの標準の改行文字で\r\nあり、Windows固有の行末シーケンスです。もちろん、クライアント側では、readLine2回も呼び出す必要があります。一度呼び出しreadLineて2行を取得する方法はありません。カスタム区切り文字が必要な場合は、ではなく他のものを使用する必要があります\n

于 2012-05-22T10:07:34.583 に答える
-1

\ nには、PrintWriterでprintlnを使用します。

于 2012-05-22T12:51:13.040 に答える