개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.12 16:15

curl_multi_add_handle에 대한 질문

목록
  • 클린코더 1일 전 2025.05.12 16:15
  • 2
    1
저는 curl_multi_add_handle 함수를 사용하여 여러 요청을 동시에 보내고 싶습니다. 하지만, curl_multi_add_handle 함수의 첫 번째 매개 변수인 'mh'의 값이 무엇인지 이해가 가지 않습니다.

curl_multi_add_handle 함수는 어떤 역할을 하는가요?
curl_multi_add_handle 함수의 첫 번째 매개 변수인 'mh'을 어떤 값으로 초기화해야 하는가요?
curl_multi_add_handle 함수를 사용하여 여러 요청을 동시에 보내는 예제를 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 19,054건 / 22 페이지

검색

게시물 검색