public static void main(String[] args) throws IOException {
String hostName = "localhost";
int portNumber = 9000;
Socket primarySocket = new Socket(hostName, portNumber);
PrintWriter out =
new PrintWriter(primarySocket.getOutputStream(), true);
BufferedReader in =
new BufferedReader(
new InputStreamReader(primarySocket.getInputStream()));
Scanner sc = new Scanner(System.in);
//main loop
boolean quit = false;
while(!quit){
System.out.println("please enter a message.");
String userInput = sc.nextLine();
if (userInput.equals("quit")){
quit=true;
}
out.println(userInput);
System.out.println("Text was sent to server");
for(String line = in.readLine(); line != null; line = in.readLine()){
System.out.println(line);
System.out.println("This is printed exactly once")
}
System.out.println("this line is never reached");
}
这是我正在处理的代码。服务器配置为简单地回显它收到的任何内容。
与终端的互动是:
请输入信息。
消息
文本已发送到服务器
消息
此文字只打印一次
然后停止并且永远不会打印“永远不会到达此行”。我在eclipse调试器中运行了for循环。它只是停止执行,就像程序崩溃一样,但没有任何异常抛出任何地方。我希望它可以打印正在流上等待的内容,然后再次开始执行top while循环,但它似乎无声地崩溃或类似的东西。
我最初在readline上使用while循环!= null,它具有相同的行为。