DataInputStream的read()中的-1是什么意思?

时间:2010-01-29 15:26:55

标签: java sockets

根据Java文档,read()方法返回:

  • -1如果没有更多数据,因为已到达流的末尾

我不太明白“流结束”是什么意思。

目前,当发生这种情况时,我会关闭/重新打开套接字(我从谷歌搜索中了解到这是一种可接受的处理方式)。 -1可能是“正常”行为吗?我不应该这么大的反应吗?也许最好只对IOException感到不安?

套接字创建:

clientSocket = new Socket(InetAddress.getByName(remoteHost), remotePort, InetAddress.getByName(sourceIpAddress), 0);

一些背景资料:

  • 我在创建套接字时使用'localAddr'属性(项目要求)
  • 我在Windows XP SP2下运行
  • 我不知道远程服务器如何处理套接字(甚至是什么语言,而不是那个应该重要的语言)。
  • 这很少发生(也许每天一次)
  • 仅适用于运行Linux的一个特定远程客户端
  • 麻烦 - 一些客户和我自己都落后于众多防火墙
  • 这种情况永远不会发生在运行各种XP版本的客户端上(也许是时候设置运行Linux的VMware映像了!)

1 个答案:

答案 0 :(得分:2)

套接字的另一端关闭了流,因此没有更多数据可供阅读 - 您已经到了最后。我进一步使用Wireshark等网络监视器进行诊断,了解套接字关闭的原因。