2011-04-19 55 views
2

我不太明白持久连接是如何工作的。理解持久连接http连接问题#

所以keepalive属性默认设置,这应该保持我的连接打开,据我所知。

所以现在我通过HTTPWebRequest上的POST发送数据。 但是我每次发送东西给收件人都会这样做。

所以它是这样的: 从客户端到服务器的POST数据,对帖子的响应被返回。

但接下来我只是发送另一个POST,而不是使用已打开的连接。所以我觉得我发送的比实际上要多。 我不能只打开一次连接,然后继续通过此连接进行通信?

我很抱歉,因为我对这个主题不甚了解,但这是我第一次真正使用网络协议。

预先感谢

丹尼尔

回答

1

KeepAlive加到HTTP协议,以改善服务器端性能。

HTTP通常是一种无状态协议。所有状态都保存为Cookie或服务器会话。如果KeepAlive设置为true,则客户端和服务器可能会保持它们的基本TCP连接处于活动状态。

通常为KeepAlive设置超时,以便如果客户端没有提出任何其他请求,则关闭此连接。

此功能通常在不同的平台上以不同的方式实现,例如,我看到了Java实现的问题,他们不尊重超时,服务器关闭连接,因此客户端尝试重新连接失败,因为它假定连接仍处于打开状态。

请参阅RFC文档here

0

如果服务器支持连接,您可以重新使用连接.... 包括您和服务器之间的任何代理。哪个地方有时会跌倒。它被加入到HTTP 1.0并正式添加到1.1中。

基本上,您的客户端会问“我可以保持此连接处于活动状态”并带有一个特殊的标头,那么如果服务器支持它,它会回复“yes”,然后客户端可以在同一套接字上发送更多请求。

您的客户端代码也必须支持此功能。 .Net应该没问题。