java.net.SocketException:连接重置

新手上路,请多包涵

尝试从套接字读取时出现以下错误。我正在做一个 readInt() InputStream ,我收到这个错误。仔细阅读文档,这表明连接的客户端部分关闭了连接。在这种情况下,我是服务器。

我可以访问客户端日志文件并且它没有关闭连接,事实上它的日志文件表明我正在关闭连接。那么有人知道为什么会这样吗?还有什么要检查的?当当地资源可能达到阈值时,是否会出现这种情况?


我确实注意到我有以下行:

 socket.setSoTimeout(10000);

就在 readInt() 之前。这是有原因的(长话短说),但只是好奇,是否存在这可能导致指示错误的情况?我让服务器在我的 IDE 中运行,我碰巧让我的 IDE 停留在断点上,然后我注意到完全相同的错误开始出现在我自己的 IDE 日志中。

无论如何,只是提一下,希望不是转移注意力。 :-(

原文由 Darryl 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 516
1 个回答

有几种可能的原因。

  1. 另一端故意重置连接,我不会在这里记录的方式。应用软件很少这样做,而且通常是不正确的,但对于商业软件来说却并非未知。

  2. 更常见的是写一个连接导致另一端已经正常关闭。换句话说,应用程序协议错误。

  3. 也可能是在套接字接收缓冲区中有未读数据时关闭套接字引起的。

  4. 在 Windows 中,“软件导致连接中止”与“连接重置”不同,它是由您发送的网络问题引起的。有一篇关于此的 Microsoft 知识库文章。

原文由 user207421 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题