【发布时间】:2014-03-08 05:53:33
【问题描述】:
所以我有这个 Java TCP 套接字客户端应用程序。很简单:
public class Main {
public static void main(String argv[]) throws Exception {
String hostName = "localhost";
int portNumber = 5000;
Socket echoSocket = new Socket(hostName, portNumber);
PrintWriter out = new PrintWriter(echoSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
echoSocket.close();
}
}
现在您可以在 while 循环中看到,当用户输入内容时。它被发送到服务器。然后客户端等待对服务器的响应。如果服务器只是回显客户端输入的内容,那么这非常有效!
“但是”当服务器没有任何响应时,我的程序只是挂起......永远等待来自服务器的输入。
所以我的问题是,如何修改代码,以便在服务器没有返回任何内容时,它不会停止?
我必须使用线程吗? 1从读取和发送客户端输入,另一个从服务器打印出响应?
【问题讨论】: