【问题标题】:Infinite loop when reading from socket [duplicate]从套接字读取时出现无限循环[重复]
【发布时间】:2015-09-27 20:55:50
【问题描述】:

我在服务器端有以下代码:

InputStream in = socket.getInputStream();
int x;
while(true) {
      x = in.read();
      if(x < 0) break;
      System.out.print((char)x);
}

客户端已正确连接并向服务器发送一些字符串。但是 while 循环永远运行。如何检测何时到达输入流的末尾。

【问题讨论】:

  • 你能告诉我们输出是什么吗?
  • x的类型是什么?
  • @AmanArora 为什么要把它改成x&gt;0?这不会检测到结束,但会导致循环在第一个字节到达时停止
  • 显示更多代码,例如您如何创建in
  • 我怀疑这不是永远循环,而是阻塞read()

标签: java sockets serversocket


【解决方案1】:

试试这个:

while((x = in.read()) >= 0) System.out.println((char)x);

in.read() 从流中返回读取的字节。如果没有要读取的字节,该方法将返回 -1。

【讨论】:

  • 这与他们已有的有什么不同?为什么0 无效?
  • 这不适用于套接字比原始代码更好,这不是答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 2015-07-17
相关资源
最近更新 更多