我正在尝试编写基于 JAVA 的彗星 HTTP 流。我为此使用 apache httpClient 4.x。由于它是彗星 HTTP 流,所有事件都以分块数据的形式到达客户端。由于连接可能会长时间保持打开状态,因此我试图在来自服务器的一些 readLine() 数据之后实现 SO_TIMEOUT 的动态设置。
当我在 BufferedInputStream 的 readLine 之后设置 SO_TIMEOUT 的值时,它没有生效,它仍然使用在 execute() 方法调用之前设置的原始 SO_TIMEOUT 值。
以下是 apache 网站对 SO_TIMEOUT 的定义: 以毫秒为单位定义套接字超时(SO_TIMEOUT),即等待数据的超时时间,或者换句话说,两个连续数据包之间的最大不活动时间)。超时值为零被解释为无限超时。
根据上面的定义,SO_TIMEOUT 值应该在每个分块数据到达时由 apache httpclient 重置。如果是这种情况,它应该接受我更新的 SO_TIMEOUT 值。在从 BufferedInputStream 中读取几行后如何设置 SO_TIMEOUT 值的任何想法?