为什么当我尝试从TCP服务器读取多行输入时,我的程序处于无限循环状态



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

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

您需要检查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;
}

你需要在while 循环中取消你的输入流,并带有一些条件,让它中断。

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

这有什么意义吗?您可以改为像inputReader.readLine() != null一样检查:

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

最新更新