HttpWebRequest.KeepAlive与ServicePoint.SetTcpKeepAlive

ET.*_*ET. 0 .net c# httpwebrequest

假设我有HttpWebRequest对象“ request”,谁能解释以下示例代码的区别/含义?

request.KeepAlive = true;
request.ServicePoint.SetTcpKeepAlive(true, 1000, 5000);
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,我都将其设置为True。如果我将一个设为True,另一个设为False怎么办?这意味着什么?

Mob*_*isk 5

这些是2个不同的功能。

HTTPWebRequest.KeepAlive是指HTTP持久连接功能,可以将套接字重新用于后续的HTTP请求。

ServicePoint.SetTcpKeepAlive是指TCP keepalive功能,该功能可在长时间不活动后阻止套接字关闭,并提供检测在不活动期间是否断开连接的功能。

两者都使用,或两者都不用,或两者结合使用是安全的。我认为在HTTP连接上使用TCP keepalive是非典型的。我推测,如果发生某种操作,而服务器没有义务在事件发生之前做出响应,则可能会使用它。例如:像通过HTTP进行长时间轮询。