当前位置:编程学习 > C#/ASP.NET >>

HttpWebRequest.KeepAlive 属性的问题

http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest.keepalive.aspx

msdn写的:
将此属性设置为 true 以发送带有 Keep-alive 值的 Connection HTTP 标头。 应用程序使用 KeepAlive 指示持久连接的首选项。 当 KeepAlive 属性为 true 时,应用程序与支持它们的服务器建立持久连接。 

我的问题是,
1,这个所谓的持久连接到底是多长时间?  是不是我request发过去的时候创建一个连接,然后我得到response后,这个连接也不关闭,一直存在? 那到底能存在多久?
永远存在的话,连接数会越来越多,总会崩溃的。
如不是永远存在,有个回收机制的话,那又与持久连接字义不是很相符。

2,如果设置成false时候,这个连接会持续多久?持续到接到返回的response后就关闭?

惯例100分,如能解惑继续加分。 --------------------编程问答-------------------- http://wenku.baidu.com/link?url=r2pSQ_IcnuG0bBcyezdYzRL-v7gaB6ueVh2HwCzAEZ4pvJWnsIiN2oLqNOPc8BfHehWBpnguAOhSr9F9_VA0kJciip_CtMrfejTyv1kS0Nm
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/ --------------------编程问答-------------------- 问题1
这个时间是可以设置的,不同的服务应用有不同的时间,如IIS是2分钟,Apache 好像是20秒,具体可查。

问题2
为false时,处理完请求后服务器就马上释放连接,那就要看服务器处理这个连接所需要的时间。

另外:
当Keep-alive启用时,同一个客户端的多次请求会使用同一个连接,但就算客户端支持 Keep-alive,是否要启用还是看服务器愿不愿意。
 Keep-alive指示TCP连接管理是否立即断开,在TCP协议中,服务器和客户端随时都可以主动断开连接,比如你关掉浏览器,这时浏览器就会发出断开连接的FIN请求,不同的浏览器,对于每一次资源请求,也都会有一个timeout时间,超过这个时间后,也会断开,总之,服务器或者客户端都可以主动先断开的。



补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,