簡體   English   中英

如何不重新使用curl_easy_perform()上的現有連接,掛在Internet連接更改上

[英]How not to re-use existing connection on curl_easy_perform(), hangs on internet connection change

我很詳細地注意到輸出:

第一次運行結束時:

* Connection #0 to host www.example.com left intact

在第二輪開始時:

* Found bundle for host www.example.com: 0x24e3360 [can pipeline]
* Re-using existing connection! (#0) with host www.example.com

我想要一種重用現有連接或在使用現有連接之前進行驗證的方法。

額外細節:

我正在使用libCurl“簡單”界面執行一些簡單的網頁下載。 我有一個可以初始化的類,並在其構造函數中設置了一些選項。 在perform方法中,我添加url選項,然后執行curl_easy_perform(...)。

嘗試使用我的課程進行操作時,我注意到:

  • 如果第一個操作處於脫機狀態,那么下一個操作就好像處於脫機狀態(即使處於聯機狀態)
  • 如果第一個操作處於聯機狀態,然后關閉了Internet連接,則在下一個操作中,curl_easy_perform(...)掛起並且永不返回。

我想要基於當前Internet連接的更適當的行為和操作。 (我嘗試在perform方法中清理並重新初始化+選項設置,該方法可以正常工作,但這似乎有點浪費。)

我去了:

curl_easy_setopt(myEasy_handle, CURLOPT_FORBID_REUSE, 1);

我在類的構造函數中添加了一次設置。 這可能會減慢操作的速度,但它似乎可以完成任務,並且可能比清理和重新初始化或使用另一個連接到某些服務器的單獨連接進行Internet連接檢查的速度更快。

我使用它是因為它似乎比我的程序的其他選項更合適。 為此,我查看了兩個有用的鏈接: link1link2

編輯:

我還添加了選項CURLOPT_TIMEOUT來設置硬限制,該限制是在easy_perform期間互聯網連接斷開時停止之前要等待的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM