支持我的代理服务器中的持久HTTP连接

时间:2009-04-16 12:18:45

标签: networking sockets proxy

我正在用C ++实现一个HTTP缓存代理服务器。我完成了它的大部分内容但是我陷入了困境。
我正在做的是创建每个线程与套接字,以便每次来自浏览器的请求来处理。我解析请求,检查它在缓存中的可用性,如果没有找到它转发到www服务器。在这两种情况下,我写在连接的套接字上收到的响应。现在问题是,除非我关闭套接字,否则浏览器不会假定传输完成并无限期等待。
这样我就不能将套接字用于多个连接,换句话说我不能支持持久连接 任何帮助将不胜感激..

谢谢,

2 个答案:

答案 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。

  

这样我就不能将套接字用于多个连接,换句话说我不能   支持持久连接。

我不确定我理解你,因为你持久的连接是一种持久的联系。