
curl_multi_info_read 함수의 return 값으로 받을 수 있는 CURLMcode와 CURLHcode의 차이점은 다음과 같습니다.
- CURLMcode는 다중 요청의 상태를 나타내는 코드로, 다중 요청의 전체 상태를 나타냅니다. 예를 들어, 다중 요청 중 하나가 타임아웃이 발생한 경우, CURLMcode는 CURLE_OPERATION_TIMEDOUT을 반환합니다.
- CURLHcode는 단일 요청의 상태를 나타내는 코드로, 단일 요청의 상태를 나타냅니다. 예를 들어, 단일 요청이 성공적으로 완료된 경우, CURLHcode는 CURLE_OK을 반환합니다.
다중 요청을 처리하는 과정에서 curl_multi_info_read 함수를 사용하여 정보를 읽어올 때, CURLMcode와 CURLHcode가 함께 반환됩니다. CURLMcode는 다중 요청의 전체 상태를 나타내며, CURLHcode는 단일 요청의 상태를 나타냅니다. 따라서, CURLMcode와 CURLHcode의 차이점을 정확하게 이해하여 다중 요청의 상태를 관리할 수 있습니다.
다음은 예제 코드를 통해 CURLMcode와 CURLHcode의 차이점을 이해할 수 있습니다.
#hostingforum.kr
c
#include
int main() {
CURLM *multi_handle;
CURL *easy_handle;
CURLcode res;
// 다중 요청을 처리하기 위한 다중 핸들 생성
multi_handle = curl_multi_init();
// 단일 요청을 처리하기 위한 단일 핸들 생성
easy_handle = curl_easy_init();
// 단일 요청을 다중 요청에 추가
curl_multi_add_handle(multi_handle, easy_handle);
// 다중 요청을 처리
do {
// 다중 요청의 정보를 읽어옵니다.
CURLMcode mc = curl_multi_info_read(multi_handle, &res);
CURLHcode hc = curl_easy_getinfo(easy_handle, CURLINFO_RESPONSE_CODE, &res);
if (mc == CURLE_OK) {
// 다중 요청의 상태를 처리합니다.
if (hc == CURLE_OK) {
// 단일 요청이 성공적으로 완료되었습니다.
printf("단일 요청이 성공적으로 완료되었습니다.n");
} else if (hc == CURLE_OPERATION_TIMEDOUT) {
// 단일 요청이 타임아웃이 발생했습니다.
printf("단일 요청이 타임아웃이 발생했습니다.n");
} else {
// 단일 요청이 실패했습니다.
printf("단일 요청이 실패했습니다.n");
}
} else {
// 다중 요청의 상태를 처리합니다.
if (mc == CURLE_OPERATION_TIMEDOUT) {
// 다중 요청이 타임아웃이 발생했습니다.
printf("다중 요청이 타임아웃이 발생했습니다.n");
} else {
// 다중 요청이 실패했습니다.
printf("다중 요청이 실패했습니다.n");
}
}
} while (res == CURLM_CALL_MULTI_PERFORM);
// 다중 요청을 종료합니다.
curl_multi_cleanup(multi_handle);
// 단일 요청을 종료합니다.
curl_easy_cleanup(easy_handle);
return 0;
}
이 예제 코드에서, CURLMcode와 CURLHcode의 차이점을 이해할 수 있습니다. CURLMcode는 다중 요청의 전체 상태를 나타내며, CURLHcode는 단일 요청의 상태를 나타냅니다. 따라서, CURLMcode와 CURLHcode의 차이점을 정확하게 이해하여 다중 요청의 상태를 관리할 수 있습니다.
2025-07-01 00:15