代码之家  ›  专栏  ›  技术社区  ›  glenneroo Menyus777

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

  •  2
  • glenneroo Menyus777  · 技术社区  · 16 年前

    根据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 回复  |  直到 16 年前
        1
  •  2
  •   nos    16 年前

    套接字的另一端已关闭流,因此没有更多的数据可读取-您已到达该端。我会用wireshark这样的网络监视器进一步诊断插座关闭的原因。

    推荐文章