我正在用Java编写Web服务器,我希望它支持HTTP 1.1 Keep-Alive连接.但是,如何判断客户端何时发送给定连接的请求?(如双线或类似物).
让我们看看stackoverflow如何处理这个非常模糊的问题 - 谷歌在技术规范和模糊语言中陷入困境的答案.我想要一个非C程序员的简明英语答案:)
我知道了.这证实了我怀疑不得不依赖于SocketTimeoutException.但是我不确定我是否可以从客户端依赖它来表明它已完成连接 - 这将允许我在大多数情况下更快地关闭连接 - 而不是等待超时.谢谢
如果您正在构建满足标准的服务器,那么您已经获得了很多信息来指导您.
简单说一下,它应该基于自使用连接以来的时间,而不是基于请求数据的级别.
以较长的方式,HTTP/1.1文档的实际考虑部分为您提供了一些指导:
"服务器通常会有一些超时值,超出这些值后,它们将不再维持非活动连接.代理服务器可能会使此值更高,因为客户端可能会通过同一服务器建立更多连接.持久性的使用连接对客户端或服务器的超时长度(或存在)没有要求."
要么
"当客户端或服务器希望超时时,应该在传输连接上发出正常关闭.客户端和服务器应该经常关注传输关闭的另一端,并在适当时对其进行响应.如果是客户端或服务器没有及时检测到对方的关闭可能会导致网络上不必要的资源消耗."