繁体   English   中英

无法理解C#中的持久性HTTP连接

[英]Trouble understanding persistent http connections in c#

我不太了解持久连接是如何工作的。

因此,据我所知,默认情况下设置了keepalive属性,这将使我的连接保持打开状态。

因此,现在我正在通过HTTPWebRequest上的POST发送数据。 但是,每次我向收件人发送邮件时,我都会这样做。

就像这样:从客户端到服务器的POST数据,返回对该帖子的响应。

但是接下来我只是发送另一个POST,而不是使用我已经打开的连接。 因此,我感觉自己的发送量超出了实际需要。 我不能只打开一次连接然后通过该连接继续通信吗?

很抱歉,我对这个主题的理解不够,但这是我第一次真正使用网络协议。

提前致谢

丹尼尔

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

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

通常为KeepAlive设置一个超时,以便如果客户端未发出任何其他请求,则此连接将关闭。

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

参见RFC文档这里

如果服务器支持该连接,则可以重新使用该连接...。 包括您与服务器之间的所有代理。 它有时会掉在哪里。 它基于HTTP 1.0并在1.1中正式添加。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM