
	                	                 
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