C 之Libcurl庫實現HTTP協議傳輸資料

2021-08-17 01:54:06 字數 2449 閱讀 2344

一直想寫一些關於c++的部落格,卻一直沒抽空來寫,今天趁著**打累了,來寫寫年前想寫的部落格。       

在做專案時,因為我使用的後台是用.net core寫的,那麼c++就需要使用http協議來同後台進行互動了。c++要如何使用http協議呢?這裡我推薦使用libcurl這個庫,不得不說這個庫真的很強大(

有興趣的小夥伴可以去查閱查閱),當然也可以使用其他的,下面我們進入正題。

,密碼:zsrb,博主這裡用的是curl-7.26.0的,將「

curl-7.26.0/include/curl

資料夾拷貝到自己的專案中,該資料夾包含了curl需要的標頭檔案,為了方便起見我將curl的庫檔案也拷貝到了專案中,並放在了剛剛的curl中,庫檔案的位址「curl-7.26.0/lib/debug」和"curl-7.26.0/lib/release"。下面我們在專案中引入curl:

//引入標頭檔案

#include "curl\curl.h"

#include "curl\easy.h"

下面我們就來說說curl的使用。

curl_global_init(curl_global_all);

curl = curl_easy_init();

curl_global_init()用以初始化curl環境,curl_easy_init用來初始化乙個easy curl物件。

curl_easy_setopt(curl, curlopt_httppost, formpost);curl_easy_setopt是對easy curl物件進行相關設定,需要設定哪些引數可以自行查閱。這事可以直接使用curl_easy_perform執行curl請求,但這種情況是阻塞的,所以下面我會介紹multi執行併發請求。先來看看**

curl_easy_setopt(curl, curlopt_httppost, formpost);    // 表單

curl_easy_setopt(curl, curlopt_writefunction, write_data);

curl_easy_setopt(curl, curlopt_writedata, &getstream);

curl_multi_add_handle(multi_handle, curl);

while (curlm_call_multi_perform == curl_multi_perform(multi_handle, &still_running));

while (still_running)

} //對接收到的getstream進行處理

exit:

curl_global_cleanup();

curl_multi_cleanup(multi_handle);

curl_easy_cleanup(curl);

curl_formfree(formpost);

curl_slist_free_all(headers);

return istrue;

}上面**中的select函式**如下:

int clibcurl::select(curlm *multi_handle)

最後補充下,在構建表單的時候可以將檔案傳入表單中

curl_formadd(&formpost, &lastptr, 

curlform_copyname, "data",

curlform_file, filepath.c_str(),        // 檔案的所在位址

curlform_end);

可以用這種方法來實現小檔案的簡單上傳,curl的用法大致就說到這裡了,想深入研究的朋友可以積極查閱資料。

使用C 網路庫libcurl

curl global init 和curl global cleanup 這兩個函式並不是執行緒安全的。所以只能在主線程中進行一次的初始化和清除。解決辦法 設定超時 curl easy setopt curl,curlopt timeout,30l 自 libcurl 是乙個很不錯的庫,支援htt...

c語言libcurl庫的非同步用法

原鏈結 multi介面的使用會比easy 介面稍微複雜點,畢竟multi介面是依賴easy介面的,首先粗略的講下其使用流程 curl multi init初始化乙個multi curl物件,為了同時進行多個curl的併發訪問,我們需要初始化多個easy curl物件,使用curl easy seto...

C語言LIBCURL庫使用注意事項

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