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

Networking 在我的代理服务器中支持持久HTTP连接 我在C++中实现了一个HTTP缓存代理服务器。我完成了大部分的工作,但是我陷入了一个点。 我所做的是用套接字创建每个线程,以便在每次来自浏览器的请求出现时进行处理。我解析请求,检查其在缓存中的可用性,如果没有找到,则将其转发到www服务器。在这两种情况下,我都在连接的套接字上写入收到的响应。现在的问题是,除非我关闭套接字,否则浏览器不会假定传输已完成并无限期等待。 这样,我不能将套接字用于多个连接,换句话说,我不能支持持久连接。 任何帮助都将不胜感激,networking,sockets,proxy,Networking,Sockets,Proxy,谢谢,您要将哪些标题发送回客户端 你应该包括: Content-Length: ... Keep-Alive: timeout=..., max=... Connection: Keep-Alive 特别是,Content-Length标头对于持久连接非常重要,以便客户端知道要读取多少数据。看 或者,如果要告诉客户端断开连接,请发送: Connection: close 现在的问题是,除非我关闭套接字,否则浏览器不会假定 传输将完成并无限期等待 对。HTTP 1.1默认使用保持活动状态 这样

谢谢,

您要将哪些标题发送回客户端

你应该包括:

Content-Length: ...
Keep-Alive: timeout=..., max=...
Connection: Keep-Alive
特别是,Content-Length标头对于持久连接非常重要,以便客户端知道要读取多少数据。看

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

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

对。HTTP 1.1默认使用保持活动状态

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

我不确定我是否理解你,因为你的持久连接是一个持久连接