Java 为什么网络输入流不止一次工作?
网络输入流在下面代码的版本1中正常工作,因为它继续从服务器接收数据消息。 但是,在版本2中,只接收到第一条消息,然后什么也不接收 为什么不起作用?还有别的选择吗 版本1Java 为什么网络输入流不止一次工作?,java,network-programming,inputstream,Java,Network Programming,Inputstream,网络输入流在下面代码的版本1中正常工作,因为它继续从服务器接收数据消息。 但是,在版本2中,只接收到第一条消息,然后什么也不接收 为什么不起作用?还有别的选择吗 版本1 public void run(){ try { BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); int c; while ((c = in.r
public void run(){
try {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
int c;
while ((c = in.read()) != -1) {
System.out.print((char) c);
}
}catch (IOException e){
e.printStackTrace();
}
}
版本2
public void run(){
try {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
String msg = in.readLine();
System.out.println(msg);
}
}catch (IOException e){
e.printStackTrace();
}
}
您的第二个版本将无法工作,因为您没有检查流的结尾
readLine()
在该点返回null。应该是:
while ((line = in.readLine()) != null)
{
// ...
}
。。。它只在读取一行时返回一行,包括一个行终止符。如果您不发送行,它就无法读取行。并且您发送的流中有新行?就是这样。服务器没有发送线路,也没有检查流的结尾。谢谢你,伊普。我不会忘记那一课的。