代码之家  ›  专栏  ›  技术社区  ›  sud03r

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

  •  0
  • sud03r  · 技术社区  · 16 年前

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

    谢谢,

    2 回复  |  直到 16 年前
        1
  •  2
  •   Alnitak    16 年前

    您要向客户端发送什么头文件?

    你应该包括:

    Content-Length: ...
    Keep-Alive: timeout=..., max=...
    Connection: Keep-Alive
    

    尤其是,Content-Length头对于持久连接是必不可少的,这样客户机就知道要读取多少数据。见 section 8.1.2.1 of RFC 2616 .

    或者,如果要告诉客户机断开连接,请发送:

    Connection: close
    
        2
  •  0
  •   user82238    16 年前

    现在的问题是,除非我关闭套接字,否则浏览器不会假定 传输完成并无限期等待。

    正确的。HTTP 1.1默认情况下使用Keep-Alive。

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

    我不确定我是否理解你,因为你所拥有的持久连接是持久连接。

    推荐文章