我有一个服务器和客户端在本地服务器上运行。

我以这种方式从服务器读取:

br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

public static String readResponse() throws IOException{
    String response = "";
    String line;
    while((line = br.readLine()) != ""){
        System.out.println("s: " + line);
    }
    return response;

}


而且我从服务器得到响应,但是程序停止了,并且从那儿什么也没走:

Please enter option number: 1
c: MSGGET
s: 200 OK
s: Go for it now. The future is promised to no one.


当它应该继续时,它只是挂在这里。

我也尝试过:

while((line = br.readLine()) != null){


它一直在等待。服务器上可能有什么需要更改的内容,以告诉客户端我已完成数据传输。

请帮忙!谢谢!

最佳答案

while((line = br.readLine()) != ""){
        System.out.println("s: " + line);
    }
    return response;

}


除非您的同伴计划将空行作为消息结束标记发送,否则此循环是毫无意义的,并且还会错误地比较字符串。


  而且我从服务器得到响应,但是程序停止了,并且没有从那里走过。


它正在等待永远不会到达的空行。并且它忽略了流条件的终结。

while((line = br.readLine()) != null){


现在,此循环是正确的,但是直到流结束,它才退出,直到对等方关闭连接,该循环才会发生。


  它一直在等待。


那就是应该做的。

07-24 09:17