libcurl使用注意

2021-10-11 02:04:26 字數 929 閱讀 8505

libcurl使用注意:

注意點1:

現象:http短連線超過一定次數後一直返回錯誤7,即curle_couldnt_connect

過程有列印:immediate connect fail for 114.116.228.34: too many open files

使用netstat檢視發現有大量的tcp連線保持在close_wait狀態:

原因:也就是說,預設情況下libcurl完成乙個任務以後,出於重用連線的考慮不會馬上關閉

如果沒有新的tcp請求來重用這個連線,那麼只能等到close_wait超時,這個時間預設在7200秒甚至更高,

太多的close_wait連線會導致效能問題,超過系統限定的檔案或socket開啟數量限制,出現too many open files

解決方法:curl_easy_setopt(curl, curlopt_forbid_reuse, 1);

最好再修改一下tcp引數調低close_wait和time_wait的超時時間

注意點2:

現象:多執行緒呼叫libcurl出現錯誤

原因:libcurl是多執行緒安全的,除了這個初始化 curl_global_init(curl_global_all); curl_global_cleanup();

解決方法:要在主線程或者程式開始的地方呼叫curl_global_init(curl_global_all);進行初始化,結束前呼叫curl_global_cleanup();

程式呼叫libcurl中的任何其他函式之前,必須在程式中至少呼叫此函式一次(程式是共享記憶體空間的所有**)。

它設定的環境對於程式的生命週期是恆定的,並且對於每個程式都是相同的,因此多個呼叫與乙個呼叫具有相同的效果。

如果沒有主動呼叫此函式,在掉curl_easy_init()時會檢測有沒呼叫過curl_global_init,沒有則會進行呼叫

C語言LIBCURL庫使用注意事項

這裡乙個j a程式設計師進行c 開發使用libcurl踩過的坑 1.傳送指定請求型別body,比較通用方法如下,可以直接填寫資料並手動指定content type,如果是form表單等形式,則需要參考curl formadd方法 2.響應結果包含了響應行和頭域資訊 curl easy setopt ...

Libcurl 簡明使用指南

libcurl為乙個免費開源的,客戶端url傳輸庫,支援ftp,ftps,tftp,http,https,gopher,telnet,dict,file和ldap,跨平台,支援windows,unix,linux等,執行緒安全,支援ipv6。並且易於使用。編譯debug版本。新建乙個批處理bat檔案...

使用libcurl提交POST請求

最近在學習libcurl,並利用它提交post請求,可是返回的響應總是無從驗證該次post請求是否成功提交了。1.先看下根據firebug提交的一次成功的請求,這裡以login我喜歡上的xiami為例,嘻嘻 1.1 本次post請求的http互動 1.3 經server端redirect的get 2...