当我试图从 TCP 服务器读取多行输入时,为什么我的程序会进入无限循环

Why my program is going on Infinite loop when i am trying to read multiple line input from TCP Server

这是我的 TCP 客户端 java 代码:

socket = new Socket("127.0.0.1", 8088);
out = new DataOutputStream(socket.getOutputStream());
inputStream = socket.getInputStream();
inputReader = new BufferedReader(new InputStreamReader(inputStream));
String result = "";
while (inputStream != null) {
    result += inputReader.readLine();
}
out.writeUTF(result);
System.out.println(result);

socket.close();
out.close();

while 循环正在无限执行。

我需要这个问题的解决方案。

您需要在 while 循环中用某些条件使您的 inputStream 无效,以使其中断。

inputStream 总是有一个值,即它不是 null,所以你继续循环和追加。

这有意义吗?您可以像 inputReader.readLine() != null 那样检查:

string line;
while ((line=inputReader.readLine()) != null) {
    result += line;
}

你需要检查什么时候 readLine() returns null,而不是什么时候 inputStream 变成 null(它永远不会):

string s = inputReader.readLine();
while (s != null) {
    result += s;
    s = inputReader.readLine();
}

或者:

string s;
while ((s = inputReader.readLine()) != null) {
    result += s;
}