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
整数类型的值,指定要用于名称解析的超时值(以毫秒为单位)。 如果解析花费的时间长于此超时值,则取消请求。 初始值为零,这意味着没有超时 (无限) 。
Windows Vista 和 Windows XP: 如果使用 NAME_RESOLUTION_TIMEOUT 指定 DNS 超时,则每个请求的开销为一个线程。
[in] nConnectTimeout
整数类型的值,指定要用于服务器连接请求的超时值(以毫秒为单位)。 如果连接请求花费的时间长于此超时值,则会取消该请求。 初始值为 60,000 (60 秒) 。
无论此参数的值如何,在三条腿 SYN/ACK 交换期间设置套接字时,TCP/IP 都可以超时。
[in] nSendTimeout
整数类型的值,指定要用于发送请求的超时值(以毫秒为单位)。 如果发送请求花费的时间长于此超时值,则取消发送。 初始值为 30,000 (30 秒) 。
[in] nReceiveTimeout
整数类型的值,该值指定超时值(以毫秒为单位)以接收对请求的响应。 如果响应花费的时间长于此超时值,则会取消请求。 初始值为 30,000 (30 秒) 。
返回值
如果成功,则返回 TRUE ,否则返回 FALSE 。 有关扩展的错误信息,请调用 GetLastError。 返回的错误代码如下。
错误代码 | 说明 |
---|---|
|
无法执行请求的操作,因为提供的句柄未处于正确的状态。 |
|
为此操作提供的句柄类型不正确。 |
|
发生了内部错误。 |
|
内存不足,无法完成请求的操作。 (Windows 错误代码) |
|
一个或多个超时参数具有除 -1 以外的负值。 |
注解
即使在异步模式下使用 WinHTTP (即在 WinHttpOpen) 中设置了WINHTTP_FLAG_ASYNC时,此函数也会同步运行。 返回值指示成功或失败。 要获得更多的错误信息,请调用 GetLastError。
如果值为 0 或 -1,则超时设置为无限等待。 大于 0 的值设置超时值(以毫秒为单位)。 例如,30,000 会将超时设置为 30 秒。 除 -1 以外的所有负值都会导致函数失败并ERROR_INVALID_PARAMETER。
示例
此示例演示如何使用 WinHttpSetTimeout 设置新的超时值。
// 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 |
Library | Winhttp.lib |
DLL | Winhttp.dll |
可再发行组件 | Windows XP 和 Windows 2000 上的 WinHTTP 5.0 和 Internet Explorer 5.01 或更高版本。 |