WinHttpSetTimeouts 함수(winhttp.h)

WinHttpSetTimeouts 함수는 HTTP 트랜잭션과 관련된 시간 제한을 설정합니다.

구문

WINHTTPAPI BOOL WinHttpSetTimeouts(
  [in] HINTERNET hInternet,
  [in] int       nResolveTimeout,
  [in] int       nConnectTimeout,
  [in] int       nSendTimeout,
  [in] int       nReceiveTimeout
);

매개 변수

[in] hInternet

WinHttpOpen 또는 WinHttpOpenRequest에서 반환된 HINTERNET 핸들입니다.

[in] nResolveTimeout

이름 확인에 사용할 제한 시간 값(밀리초)을 지정하는 정수 형식의 값입니다. 해결 방법이 이 제한 시간 값보다 오래 걸리면 요청이 취소됩니다. 초기 값은 0입니다. 즉, 제한 시간(무한)이 없습니다.

Windows Vista 및 Windows XP: NAME_RESOLUTION_TIMEOUT 사용하여 DNS 시간 제한을 지정하면 요청당 하나의 스레드 오버헤드가 발생합니다.

[in] nConnectTimeout

서버 연결 요청에 사용할 제한 시간 값(밀리초)을 지정하는 정수 형식의 값입니다. 연결 요청이 이 제한 시간 값보다 오래 걸리면 요청이 취소됩니다. 초기 값은 60,000(60초)입니다.

TCP/IP는 이 매개 변수의 값에 관계없이 세 다리 SYN/ACK 교환 중에 소켓을 설정하는 동안 시간 초과할 수 있습니다.

[in] nSendTimeout

요청을 보내는 데 사용할 제한 시간 값(밀리초)을 지정하는 정수 형식의 값입니다. 요청을 보내는 데 이 시간 제한 값보다 오래 걸리면 보내기가 취소됩니다. 초기 값은 30,000(30초)입니다.

[in] nReceiveTimeout

요청에 대한 응답을 받을 시간 제한 값(밀리초)을 지정하는 정수 형식의 값입니다. 응답이 이 시간 제한 값보다 오래 걸리면 요청이 취소됩니다. 초기 값은 30,000(30초)입니다.

반환 값

성공하면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다. 확장 오류 정보는 GetLastError를 호출합니다. 반환된 오류 코드 중에는 다음과 같습니다.

오류 코드 Description
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
제공된 핸들이 올바른 상태가 아니므로 요청된 작업을 수행할 수 없습니다.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
제공된 핸들의 형식이 이 작업에 잘못되었습니다.
ERROR_WINHTTP_INTERNAL_ERROR
내부 오류가 발생했습니다.
ERROR_NOT_ENOUGH_MEMORY
요청된 작업을 완료하는 데 사용할 수 있는 메모리가 부족합니다. (Windows 오류 코드)
ERROR_INVALID_PARAMETER
하나 이상의 시간 제한 매개 변수에는 -1 이외의 음수 값이 있습니다.

설명

WinHTTP가 비동기 모드에서 사용되는 경우에도(즉, WinHttpOpen에서 WINHTTP_FLAG_ASYNC 설정된 경우) 이 함수는 동기적으로 작동합니다. 반환 값은 성공 또는 실패를 나타냅니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

값이 0 또는 -1이면 제한 시간이 무한히 대기하도록 설정됩니다. 0보다 큰 값은 시간 제한 값을 밀리초 단위로 설정합니다. 예를 들어 30,000은 제한 시간을 30초로 설정합니다. -1 이외의 모든 음수 값은 ERROR_INVALID_PARAMETER 함수가 실패합니다.

중요WinHttpSetOptionWINHTTP_OPTION_RECEIVE_TIMEOUT 사용하여 작은 시간 제한이 설정된 경우 dwReceiveTimeout 매개 변수로 설정된 값을 재정의하여 응답이 예상보다 일찍 종료될 수 있습니다. 이를 방지하려면 dwReceiveTimeout을 사용하여 설정된 값보다 작은 WINHTTP_OPTION_RECEIVE_TIMEOUT 옵션으로 시간 제한을 설정하지 마세요.
 
참고 Windows XP 및 Windows 2000의 경우 WinHTTP 시작 페이지의 런타임 요구 사항 섹션을 참조하세요.
 

예제

이 예제에서는 WinHttpSetTimeouts를 사용하여 새 시간 제한 값을 설정하는 방법을 보여 줍니다.

    // Use WinHttpOpen to obtain an HINTERNET handle.
    HINTERNET hSession = WinHttpOpen(L"A WinHTTP Example Program/1.0", 
                                    WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
                                    WINHTTP_NO_PROXY_NAME, 
                                    WINHTTP_NO_PROXY_BYPASS, 0);
    if (hSession)
    {
        // Use WinHttpSetTimeouts to set a new time-out values.
        if (!WinHttpSetTimeouts( hSession, 10000, 10000, 10000, 10000))
            printf( "Error %u in WinHttpSetTimeouts.\n", GetLastError());
              
        // PLACE ADDITIONAL CODE HERE.
    
        // When finished, release the HINTERNET handle.
        WinHttpCloseHandle(hSession);
    }
    else
    {
        printf("Error %u in WinHttpOpen.\n", GetLastError());
    }

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP, Windows 2000 Professional SP3 포함 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003, Windows 2000 Server SP3 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winhttp.h
라이브러리 Winhttp.lib
DLL Winhttp.dll
재배포 가능 파일 Windows XP 및 Windows 2000에서 WinHTTP 5.0 및 인터넷 Explorer 5.01 이상.

추가 정보

Microsoft Windows HTTP 서비스 정보(WinHTTP)

WinHTTP 버전

WinHttpCloseHandle

WinHttpConnect

WinHttpOpen

WinHttpOpenRequest