什么可能导致Java TCP套接字关闭?

时间:2015-06-08 15:16:34

标签: java sockets tcp

我试图在Android中专门使用MQTT客户端的实现Paho Java client,并尝试跟踪我遇到EOFException错误的位置。

具体而言,这发生在in.readByte();

public final byte readByte() throws IOException {
    int temp = in.read();
    if (temp < 0) {
        throw new EOFException();
    }
    return (byte) temp;
}

看过这个例外,当我试图从已经关闭的套接字中读取时,它似乎被触发了。这似乎是一个网络错误,我无法找到。

我的问题是什么可能导致套接字关闭?我还没有排除以编程方式关闭它的可能性,但是在外部因素的情况下,TCP套接字关闭的常见原因是什么?也许与Android设备有关的任何更具体的原因?

1 个答案:

答案 0 :(得分:2)

通常导致套接字关闭的事情是:

  • 客户端关闭套接字
  • 服务器可能由于超时而关闭套接字
  • 服务器关闭并在关闭之前或重启之后发出重置,这会关闭套接字
  • 防火墙对连接进行计时,并通过发出后续重置来有效地关闭套接字

如果没有关于您的特定症状的更多详细信息,很难说哪一种最有可能。