【发布时间】:2017-08-04 16:35:05
【问题描述】:
有没有办法为 JDK stdlib HttpUrlConnection 设置套接字级别选项(如 SO_KEEPALIVE)?我试图找出一种方法来获取不会成为偶尔“挂起”连接的受害者(这似乎是由于网络数据包丢失而经常发生)。更健壮的 HTTP 客户端。我知道有setReadTimeout 方法,但我试图找到一些东西来推动TCP 流恢复正常,而不是像读取超时那样中止它。或者至少报告连接失败已经发生,而不是在读取时永远挂起。但这也允许读取“随时”返回,前提是连接“仍处于活动状态”。
经过一些检查,对于 C 层和 Java 级别的套接字,SO_KEEPALIVE 的默认值似乎都是“关闭”的。
【问题讨论】:
-
你结婚使用HttpUrlConnection了吗? Apache 的 HttpClient 可能有你正在寻找的东西。 HttpClient
-
@drelliot 我猜你是对的,请随意将其作为答案,我会接受 :)
-
对于追随者,是的,其他客户端允许指定 SO_KEEPALIVE(见对话)