【问题标题】:HttpURLConnection connection reset error handlingHttpURLConnection 连接重置错误处理
【发布时间】:2015-04-08 09:37:50
【问题描述】:

我在 SE6 版本上运行服务器客户端 Java 应用程序。服务器和客户端之间的消息传递是通过 http 协议进行的。通常,此应用程序运行良好,但最近我开始在客户端日志上看到一些“连接重置”错误。我认为这可能是因为保持活动状态并禁用它,但错误仍然存​​在。这是客户端错误日志。

java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:208)
    at java.net.SocketInputStream.read(SocketInputStream.java:134)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:247)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:287)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:346)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:717)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:663)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1336)
    at cb.smg.general.utility.ESIHttpCaller.executePost(ESIHttpCaller.java:43)

我知道服务器端有问题,如果工作线程池已满,则套接字在服务器端和客户端没有适当的 http 代码就关闭了,我们会得到 java.net.SocketException: Unexpected end of file from server。卜那应该是非常罕见的。 我的第一个问题可能是这个错误(连接重置)是因为应用程序之外的一些更改(例如操作系统修复。) 其次,处理此异常的最佳方法是什么,目前我只是在 finally 块中调用以下方法。

HttpURLConnection.disconnect()

【问题讨论】:

标签: java sockets httpurlconnection


【解决方案1】:

如果工作线程池已满,则套接字在服务器端和客户端没有适当的 http 代码就关闭,我们会得到 java.net.SocketException: Unexpected end of file from server.

'连接重置'。这取决于您当时是在阅读还是在写作。

我的第一个问题可能是这个错误(连接重置)是因为应用程序之外的一些更改(例如操作系统修复)。

没有。

其次,处理此异常的最佳方法是什么,目前我只是在 finally 块中调用以下方法。

好主意。

【讨论】:

  • 感谢您的回答。实际上应该有一些池耗尽错误,在这种情况下我看不到。另外我假设如果服务器关闭连接,错误应该是“对等连接重置”。没有?
猜你喜欢
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 2011-10-27
  • 1970-01-01
相关资源
最近更新 更多