PrintWriter println(String s) 方法: 不支持?
-
12-12-2019 - |
题
我正在创建一个多线程聊天客户端服务器应用程序。在服务器连接中,我使用 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;
它有效,所以我认为这是因为我正在使用 但我仍然需要在这两条消息之间打印一个新行。我应该怎么办?
编辑 接受答案后:最后我选择使用 OutputStream 和 InputStream,这样我就可以发送我想要的各种字符串,即使使用 也是如此。
解决方案
要么打电话 println
每行输出一次(所以两次)或仅使用 \n
, ,没有 \r
. 。这是 Java 的标准换行符和 \r\n
是 Windows 特定的行尾序列。当然,在客户端你现在必须调用 readLine
也是两倍。没有办法打电话 readLine
一次并得到两条线。如果您需要自定义分隔符,那么您必须使用其他内容,而不是 \n
.
其他提示
使用println与printwriter,用于\ n。
使用println
或使用%n
printf
不隶属于 StackOverflow