
	                	                 
curl_multi_add_handle을 사용하여 여러 요청을 추가하는 순서는 다음과 같습니다.
1. curl_multi_init 함수를 호출하여 멀티 핸들러를 초기화합니다.
2. curl_easy_init 함수를 호출하여 새로운 커널을 초기화하고, curl_easy_setopt 함수를 사용하여 커널의 옵션을 설정합니다.
3. curl_multi_add_handle 함수를 호출하여 멀티 핸들러에 커널을 추가합니다.
4. curl_multi_exec 함수를 호출하여 멀티 핸들러의 실행을 시작합니다.
curl_multi_add_handle을 사용하여 요청의 상태를 확인할 수 있는 함수는 curl_multi_info_read 함수입니다. 이 함수는 멀티 핸들러의 정보를 읽어와, 요청의 상태를 확인할 수 있습니다.
curl_multi_add_handle을 사용하여 요청을 추가하는 예제 코드는 다음과 같습니다.
#hostingforum.kr
c
#include 
int main() {
    CURL *curl;
    CURLM *mh;
    CURLMcode mc;
    // 멀티 핸들러 초기화
    mh = curl_multi_init();
    // 커널 초기화
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_memory_callback);
        // 멀티 핸들러에 커널 추가
        mc = curl_multi_add_handle(mh, curl);
        if(mc != CURLM_OK) {
            // 오류 처리
        }
        // 멀티 핸들러의 실행 시작
        curl_multi_exec(mh, 0);
        // 요청의 상태 확인
        CURLMsg *msg;
        while((msg = curl_multi_info_read(mh, 0)) != NULL) {
            if(msg->msg == CURLMSG_DONE) {
                CURLcode res = msg->data.result;
                if(res == CURLE_OK) {
                    // 요청 성공
                } else {
                    // 요청 실패
                }
            }
        }
        // 커널 해제
        curl_easy_cleanup(curl);
        // 멀티 핸들러 해제
        curl_multi_cleanup(mh);
    }
    return 0;
}
static size_t write_memory_callback(void *ptr, size_t size, size_t nmemb, void *data) {
    // 데이터 처리
    return size * nmemb;
}
이 예제 코드는 멀티 핸들러를 초기화하고, 커널을 추가한 후, 멀티 핸들러의 실행을 시작합니다. 요청의 상태를 확인하기 위해 curl_multi_info_read 함수를 사용합니다. 요청의 상태가 성공인지 실패인지 확인하고, 오류 처리를 합니다.
2025-03-27 19:49