gpt4 book ai didi

java - 客户端正在从 TCP 套接字中丢失一些线路

转载 作者:可可西里 更新时间:2023-11-01 02:32:20 25 4
gpt4 key购买 nike

我的 ServerSocket 写出以下几行:

OutputStreamWriter outstream = new OutputStreamWriter(clientSocket.getOutputStream());

BufferedWriter out = new BufferedWriter(outstream);

out.write("Hello");
out.newLine();
out.write("People");

out.flush();

我的客户是这样读的:

in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while(true){
line = in.readLine();

if(line == null){
ClientDialog.gui.log.append("NULL LINE\r\n");
} else{
ClientDialog.gui.log.append(line+"\r\n");
}

if(in.readLine() == "SHUTDOWN"){
break;
}
}

如您所见,我在套接字上写了一个新行“Hello”,然后是“People”,但是当我运行我的客户端时,它只重复打印“Hello”和 null。我不明白有什么问题吗?


问题已解决:

我必须在将“People”写入套接字后添加一个 out.newLine(),并且我必须执行 line == "SHUTDOWN" 而不是 in.readLine() == "SHUTDOWN" 因为 in.readLine() 正在消耗“人”。

还建议在 String 类中使用 equals() 方法,而不是 ==

谢谢!

这是为 future 的观众准备的。

最佳答案

每个循环调用 readLine 两次。

if(in.readLine() == "SHUTDOWN"){
break;
}

上面的代码使用了你的“People”行

修复更改为

if("SHUTDOWN".equals(line){
break;
}

此外,你应该在发送“People”后发送一个换行符

关于java - 客户端正在从 TCP 套接字中丢失一些线路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599173/

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