繁体   English   中英

创建多个 HTTP 持久连接

[英]Creating multiple HTTP persistent connections

我知道从 HTTP 1.1 开始默认使用持久连接。 我需要做的是建立不止一个持久连接,这样我就可以将多个持久连接会话中的请求发送到一个目标......

是否可以从一台 PC 到一个目标网络服务器创建多个 HTTP 持久连接? 例如,使用HttpWebRequest我在 VisualStudio 中创建了对我的 Apache 网络服务器的 GET 请求(类似于下面的代码),但根据我对网络服务器的 Wireshark 分析,所有这些请求都放在一起并仅通过一个持久连接发送。

while(true){
     var request = (HttpWebRequest)WebRequest.Create(URL);
     var request2 = (HttpWebRequest)WebRequest.Create(URL);
     try {
          using (var response = (HttpWebResponse)request.GetResponse()) { 
               Console.WriteLine(response.Headers);
          }
          using (var response2 = (HttpWebResponse)request2.GetResponse()) {
               Console.WriteLine(response2.Headers);
          }
     }
     catch (WebException e) {
          Console.WriteLine(e);
     }
     Thread.Sleep(2000); //wait for sending next request
}

这样做是因为持久连接的目的,但我想以某种方式避免它并通过多个持久连接会话发送独立的请求。 我不想通过使用线程来做到这一点,因为这对 CPU 等来说太多了。 什么是最好的或其他方式(使用其他工具或库)如何做到这一点?

您一次只能通过一个 TCP 连接发送一个 HTTP 请求。

HTTP Persistance, (more commonly known as HTTP pipelining) allows you to chain multiple HTTP requests one after the other using the same underlying TCP Connection. 这提高了性能,因为每次您要发送 HTTP 请求时,不需要重新建立 HTTP 运行的底层 TCP 连接。

如果要运行并行 HTTP 请求,则需要为每个要运行的并行请求设置一个WebRequest() 然后,您可以将多个请求一个接一个地链接到每个WebRequest()上。

例如,如果您有 100 个想要执行的 URL 请求。

您可以创建 10 个 WebRequest,并让每个 WebRequest 依次请求 100 个 URL 中的 10 个。

暂无
暂无

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

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