java.net.SocketException:连接重置
我在尝试从套接字读取时遇到以下错误。我正在执行readInt()
该操作InputStream
,并且出现此错误。仔细阅读文档,这表明连接的客户端部分关闭了连接。在这种情况下,我是服务器。
我可以访问客户端日志文件,但它没有关闭连接,实际上它的日志文件表明我正在关闭连接。有人知道为什么会这样吗?还有什么要检查的?当有本地资源可能达到阈值时,会出现这种情况吗?
我确实注意到我有以下几行:
socket.setSoTimeout(10000);
就在readInt()。这是有原因的(长话短说),但出于好奇,在某些情况下这可能会导致指示的错误?我的服务器在IDE中运行,我碰巧将IDE卡在断点上,然后我发现完全相同的错误开始出现在我自己的IDE日志中。
回答:
有几种可能的原因。
- 另一端故意重设了连接,在此我将不做记录。应用程序软件很少会这样做,而且通常是不正确的,但对于商业软件而言,这并不是未知的。
- 更常见的是,由于写入连接而导致另一端已经正常关闭。换句话说,应用程序协议错误。
- 当套接字接收缓冲区中有未读数据时,关闭套接字也会导致此错误。
- 在Windows中,“软件引起的连接中止”与“连接重置”不同,这是由您端发送的网络问题引起的。有关于此的Microsoft知识库文章。
以上是 java.net.SocketException:连接重置 的全部内容, 来源链接: utcz.com/qa/421565.html