当我尝试从TCP Server读取多行输入时,为什么我的程序进入无限循环

问题描述 投票:0回答:3

这是我的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循环正在无限执行。

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

java tcp socket.io infinite-loop tcpclient
3个回答
0
投票

您需要检查何时readLine() 返回 null,而不是inputStream 成为 null(永远不会):

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

或:

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

-1
投票

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


-1
投票

[inputStream总是有一个值,即它不是null,所以您不断循环和追加。

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

string line;
while ((line=inputReader.readLine()) != null) {
    result += line;
}
© www.soinside.com 2019 - 2024. All rights reserved.