PRINTWRITER PRINTLN(文字列S)メソッド:\ R \ Nがサポートされていませんか?
-
12-12-2019 - |
質問
マルチスレッドチャットクライアントサーバアプリケーションを作成しています。 サーバー接続で、私はPrintWriter PrintLn(文字列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()メソッドを使用してサーバーから読み取るクライアントを実行すると、Welcomeメッセージが表示されますが、クライアントの保留中のメッセージは取得されますが、
を使用している場合response+=textmsg;
.
それは私が\ r \ nを使っているからですが、それらの2つのメッセージの間に新しい行を印刷する必要があるからです。私は何をすべきか?
編集回答を受け入れた後:最後に、私はOutputStreamとInputStreamを使用することを選択して、\ r \ nであっても私が欲しいすべての種類の文字列を送信できます。
解決
出力の各行ごとに1回呼び出すか(2回)、またはprintln
なしで\n
のみを使用します。それはJavaの標準の改行CHAR、\r
はWindows固有の行末シーケンスです。もちろん、クライアントの終わりには、\r\n
を2回呼び出す必要があります。readLine
を1回呼び出して2行を取得する方法はありません。カスタム区切り文字が必要な場合は、readLine
ではなく、他のものを使用する必要があります。
他のヒント
PrintWriterを使用してPrintLNを使用してください。
println
を使用するか、%n
printf
を使用します。 所属していません StackOverflow