无法理解c#中的持久性http连接

时间:2011-04-19 12:58:27

标签: c# web-services http client-server

我不太清楚持久连接是如何工作的。

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

所以现在我通过HTTPWebRequest上的POST发送我的数据。 但每次我向收件人发送内容时,我都会这样做。

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

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

我很遗憾对这个问题的理解不足,但这是我第一次真正使用网络协议。

提前致谢

丹尼尔

2 个答案:

答案 0 :(得分:1)

KeepAlive已添加到HTTP协议中以提高服务器端性能。

HTTP通常是无状态协议。所有状态都保留为cookie或服务器会话。如果KeepAlive设置为true,则客户端和服务器可能会使其底层TCP连接保持活动状态。

通常为KeepAlive设置超时时间,以便在客户端未发出任何其他请求时,此连接已关闭。

此功能通常在不同平台上实现不同,例如我看到Java实现的问题,他们不尊重超时,服务器关闭连接,因此客户端再次尝试连接失败,因为它假定连接仍然打开。 / p>

请参阅RFC文档here

答案 1 :(得分:0)

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

基本上,您的客户端使用特殊标头询问“我可以保持此连接活动”,然后如果服务器支持它,它会回复说“是”,然后客户端可以在同一个套接字上发送更多请求。

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