簡體   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