gpt4 book ai didi

java - 使用 java 套接字 readUTF 时消息丢失

转载 作者:行者123 更新时间:2023-12-01 10:11:06 25 4
gpt4 key购买 nike

我一整天都在处理一个问题,我用多种不同的方式在谷歌上搜索了它,但我就是找不到解决方案,所以我 guest 是时候问了:

我正在尝试使用套接字编写两个应用程序:客户端和服务器,除了一件事之外的一切都工作正常:客户端不会收到所有消息,而只会收到配对消息。

我正在做的是循环一个 2D 数组,每“x”一次从服务器向客户端发送一条消息,但例如,如果循环发送 8 条消息,则客户端仅接收消息 2、4、6 和 8。

我在服务器端控制台中打印了输出,以验证数组是否已填充属性并且服务器显示所有消息但不显示客户端。

我正在使用这个:

    DataOutputStream out = new DataOutputStream(outToServer);
out.writeUTF(getMACAddress());
InputStream inFromServer = client.getInputStream();
DataInputStream in = new DataInputStream(inFromServer);
while (true)
{
String input = in.readUTF();
if (input.equals("finish"))
{
System.out.println("Server has closed the connection\nGoodBye!");
System.exit(0);
}
else
{
System.out.println("Server says " + in.readUTF());
}
}

最佳答案

问题在于,您读取了input来与“finish”进行比较,然后您读取了一个从未进行比较的全新字符串。

相反,您应该在条件的 else 分支中打印 input,即

while (true) {
String input = in.readUTF();
if (input.equals("finish")) {
System.out.println("Server has closed the connection\nGoodBye!");
System.exit(0);
} else {
System.out.println("Server says " + input);
// ^^^^^
}
}

关于java - 使用 java 套接字 readUTF 时消息丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36107510/

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