gpt4 book ai didi

Java - 客户端从服务器接收空白消息,但仅通过网络

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:55 25 4
gpt4 key购买 nike

我不确定这个问题是否与网络有关,但我正在尝试使用一个简单的服务器向多个客户端发送消息。在我自己的计算机上测试时它工作正常,但通过网络到另一台计算机时会出现问题。

客户端连接到服务器正常,发送到客户端的第一条消息应该是“服务器:Hello,World!”,但出现了一个空白字符串。然后,第二个字符串始终按其应有的方式读取,而其余所有字符串通常会显示为空白字符串。服务器使用自动刷新通过 PrintStream 发送信息。

下面是客户端程序读取输入的部分。我相信如果有的话,这里有一个问题,但我不确定是什么,因为我对套接字和网络事物有点陌生。服务器每 500 毫秒发送一行文本,对每个客户端进行计数。我尝试将此数字更改为更高的值,但客户端仍然没有收到正确的消息。客户端应接收消息并将其打印到屏幕上,并在 5、10、15 和 20 处显示如下所示的回复。

    try {
socket.setSoTimeout(10);
String line;
while((line = input.readLine())!=null){
if (!line.equals("")){
// Replies
if (output != null) {
if (line.endsWith(" 20")){
output.println("Reached 20!");
}else if (line.endsWith(" 15")){
output.println("Reached 15!");
}else if (line.endsWith(" 10")){
output.println("Reached 10!");
}else if (line.endsWith(" 5")){
output.println("Reached 5!");
}
}

messages.add(line);
if (messages.size() >= 8){
messages.remove(0);
}
}else{
messages.add("EMPTY STRING!!");
if (messages.size() >= 8){
messages.remove(0);
}
}
}
} catch (SocketTimeoutException e){
// Timed out
} catch (Exception e) {
System.err.println("Connection lost");
break;
}

(快速编辑:可能应该提到这是在 run 方法内的 while 循环中,因为我在我的类上实现了 Runnable。)

当使用 input.readLine() 时,我是否应该在之前检查一些内容以确保它不会只是空字符串?是不是因为我设置了超时的原因?

预先感谢,我还应该提到我是 stackoverflow 的新手,如果我做错了什么,请指出! :)

最佳答案

好吧,好吧。事实证明,这是因为超时时间太小。我把它调到一整秒,现在打印效果很好。不管怎样,谢谢大家:)

关于Java - 客户端从服务器接收空白消息,但仅通过网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24136880/

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