我正在用C ++实现一个HTTP缓存代理服务器。我完成了它的大部分内容但是我陷入了困境。
我正在做的是创建每个线程与套接字,以便每次来自浏览器的请求来处理。我解析请求,检查它在缓存中的可用性,如果没有找到它转发到www服务器。在这两种情况下,我写在连接的套接字上收到的响应。现在问题是,除非我关闭套接字,否则浏览器不会假定传输完成并无限期等待。
这样我就不能将套接字用于多个连接,换句话说我不能支持持久连接
任何帮助将不胜感激..
谢谢,
答案 0 :(得分:2)
您要将哪些标头发送回客户端?
你应该包括:
Content-Length: ...
Keep-Alive: timeout=..., max=...
Connection: Keep-Alive
特别是,Content-Length标头对于持久连接至关重要,因此客户端知道要读取多少数据。请参阅section 8.1.2.1 of RFC 2616。
或者,如果您想告诉客户端断开连接,请发送:
Connection: close
答案 1 :(得分:0)
现在的问题是,除非我关闭套接字,否则浏览器不会采用 转移完成并无限期等待。
右。 HTTP 1.1默认使用Keep-Alive。
这样我就不能将套接字用于多个连接,换句话说我不能 支持持久连接。
我不确定我理解你,因为你持久的连接是一种持久的联系。