
curl_multi_add_handle 함수는 멀티플렉싱을 지원하는 libcurl 라이브러리의 함수 중 하나로, 여러 요청을 동시에 보내는 기능을 제공합니다.
curl_multi_add_handle 함수의 첫 번째 매개 변수인 'mh'는 멀티플렉싱 핸들러의 핸들입니다. 이 핸들러는 여러 요청을 관리하고, 요청이 완료되었을 때 콜백 함수를 호출하는 역할을 합니다.
curl_multi_add_handle 함수를 사용하여 여러 요청을 동시에 보내는 예제는 다음과 같습니다.
#hostingforum.kr
c
#include
int main() {
CURL *curl;
CURLM *mh;
CURLMcode cm;
// 멀티플렉싱 핸들러를 초기화합니다.
CURLM_global_init();
// 멀티플렉싱 핸들러를 생성합니다.
mh = curl_multi_init();
// 멀티플렉싱 핸들러에 요청을 추가합니다.
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/request1");
curl_multi_add_handle(mh, curl);
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/request2");
curl_multi_add_handle(mh, curl);
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/request3");
curl_multi_add_handle(mh, curl);
// 요청을 보내고, 완료되었을 때 콜백 함수를 호출합니다.
cm = curl_multi_perform(mh, NULL);
if (cm != CURLM_OK) {
// 오류 처리
}
// 요청이 완료되었을 때 콜백 함수를 호출합니다.
while (1) {
CURLMcode cm;
int still_running = 0;
cm = curl_multi_perform(mh, &still_running);
if (still_running > 0) {
// 요청이 완료되지 않았습니다.
continue;
} else {
// 요청이 완료되었습니다.
break;
}
}
// 멀티플렉싱 핸들러를 종료합니다.
curl_multi_cleanup(mh);
CURLM_global_cleanup();
return 0;
}
이 예제에서는 세 개의 요청을 동시에 보내고, 완료되었을 때 콜백 함수를 호출합니다. 요청이 완료되면 while 루프를 빠져나와 멀티플렉싱 핸들러를 종료합니다.
2025-05-12 16:16