我正在尝试使用Java在网络上发送带有新行的文本。例如:
“你好\ n这是一个新行”
这是我用于客户端的代码:
Socket kkSocket = null;
PrintWriter out = null;
BufferedReader in = null;
/*connect to server here*/
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromUser;
while ((fromServer = in.readLine()) != null) {
System.out.print("Server: " + fromServer);
if (fromServer.equals("Bye.")) {
break;
}
fromUser = stdIn.readLine();
if (fromUser != null) {
System.out.print("Client: " + fromUser);
out.println(fromUser);
}
}
out.close();
in.close();
stdIn.close();
kkSocket.close();
以下是我用于服务器的代码:
/*Connect to server here*/
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine, outputLine;
Protocol kkp = new Protocol();
outputLine = kkp.processInput(null);
out.println(outputLine);
while ((inputLine = in.readLine()) != null) {
outputLine = kkp.processInput(inputLine);
out.println(outputLine);
if (outputLine.equals("Bye.")) break;
}
但它只返回第一行。
有人能够指出我正确的方向,所以我可以使用新的线路吗?
答案 0 :(得分:2)
首先要注意的是readLine()
方法使用行终止符\n
作为其中之一,这就是未包含剩余文本的原因,为此,您必须调用{{ 1}}方法再次。在您的情况下,我会使用readLine()
方法读取read(char[] cbuf, int off, int len)
,如下所示:
而不是使用char[]
使用readLine()
阅读如下
read(char[] cbuf, int off, int len)