gpt4 book ai didi

java - 基本网络客户端中的意外输出

转载 作者:行者123 更新时间:2023-12-01 22:55:27 27 4
gpt4 key购买 nike

import java.io.*;
import java.net.*;

public class BankClient {
public static void main(String[] args) throws IOException {
String host = "192.168.1.100";
int port = 7331;

try(
Socket bankSocket = new Socket(host, port);
PrintWriter out = new PrintWriter(bankSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(bankSocket.getInputStream()));
) {
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;

boolean clientRunning = true;
while(clientRunning) {
System.out.println("TEST1");
while((fromServer = in.readLine()) != null) {
System.out.println(fromServer);
System.out.println("TEST2");
}
System.out.println("TEST3");
}
} catch (UnknownHostException e) {
System.err.println("Unknown host " + host);
System.exit(1);
} catch (IOException e) {
System.err.println("Disconnected");
System.exit(1);
}
}
}

所以我只是在 Java 中玩弄网络,这是基本客户端的脚本,但由于某种原因,当我使用服务器运行它时,我得到了奇怪的输出:

TEST1
Server Message 1
TEST2
Server Message 2
TEST2

程序仍在运行,但输出停止在那里。让我困惑的是 TEST3 并没有像我预期的那样连续输出。看起来像 while((fromServer = in.readLine()) != null)两次迭代后会像应该的那样中断,但 while 循环运行后不会发生任何情况。 while(clientRunning)没有中断,因为程序仍在运行,但它也没有迭代,因为 TEST3 没有被输出。那么这里发生了什么?

最佳答案

 but it also isn't iterating because TEST3 isn't being outputted

每次调用in.readLine())时,您都在等待服务器响应到达。

根据您的结果,服务器仅将 2 个数据包传递给客户端,从而给您两个结果,并将返回读取服务器的下一个输入流,并等待响应,直到服务器关闭或添加时客户端 Socket 中的 socketTimeout。

关于java - 基本网络客户端中的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24127886/

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