gpt4 book ai didi

JAVA : Handling socket disconnection

转载 作者:行者123 更新时间:2023-12-01 16:33:15 31 4
gpt4 key购买 nike

  1. 两台计算机通过套接字连接。如果服务器/客户端关闭连接从他们的末端(即关闭InputStreamOutputStreamSocket)那么我如何通知另一端关于断开连接?我知道有一种方法 - 尝试从 InputStream 中读取,如果连接关闭,它会抛出 IOException ,但是还有其他方法可以检测到这一点吗?
  2. 另一个问题,我在网上查了一下问题,看到了inputStream.available()并不能解决这个问题。这是为什么?

其他信息:我要求另一种方式,因为如果我必须尝试从InputStrem 用于检测断开连接。

最佳答案

trying to read from the InputStream, which throws an IOException

这是不正确的。如果对等方关闭套接字:

  • read() 返回 -1
  • readLine() 返回 null
  • readXXX() 对于任何其他 X 都会抛出 EOFException

由于 InputStream 只有 read() 方法,因此它只返回 -1:它不会在 EOS 上抛出 IOException

与这里的其他答案相反,没有 TCP API 或 Socket 方法可以告诉您对等方是否已关闭连接。您必须尝试读取或写入。

您应该使用读取超时。

InputStream.available() 不能解决问题,因为它不返回任何类型的 EOS 指示。它的正确用法很少,这不是其中之一。

关于JAVA : Handling socket disconnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12243765/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com