gpt4 book ai didi

java - 通过网络发送带有换行符的文本

转载 作者:行者123 更新时间:2023-11-30 04:27:17 25 4
gpt4 key购买 nike

我正在尝试使用 Java 通过网络发送带有换行符的文本。例如:

"hello \n this is a new line"

这是我为客户端使用的代码:

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;
}

但它只返回第一行。

有人能够为我指明正确的方向,以便我可以使用新的线路吗?

最佳答案

首先要注意的是 readLine() 方法使用行终止符 \n 作为其中之一,这就是不包含剩余文本的原因,以便这样做要发生这种情况,您必须再次调用 readLine() 方法。在您的情况下,我将使用 read(char[] cbuf, int off, int len) 方法读取 char[] 如下:

不要使用readLine(),而是使用read(char[] cbuf, int off, int len)来读取,如下

char[] cbuf = new char[1024];
while (in.read(cbuf, 0, cbuf.length) != null) {
fromServer = new String(cbuf);
System.out.print("Server: " + fromServer);
if (fromServer.equals("Bye.")) {
break;
}

fromUser = stdIn.readLine();
if (fromUser != null) {
System.out.print("Client: " + fromUser);
out.println(fromUser);
}
}

关于java - 通过网络发送带有换行符的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15541670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com