Windows网络编程:WinInet与WinHttp比较分析

需积分: 33 19 下载量 81 浏览量 更新于2024-09-11 1 收藏 61KB DOCX 举报
"WinInet与WinHttp是Windows平台下的两个网络库,分别适用于客户端和服务器端编程。WinInet因支持多种协议(Gopher、HTTP、HTTPS、FTP)且与IE浏览器紧密关联,适用于全面的网络服务,而WinHttp专注于HTTP和HTTPS,更适合服务器端的HTTP应用。WinHttp比WinInet更现代,不受到IE设置的影响,如代理服务器配置、自动拨号服务等。此外,WinHttp在安全性、Cookie管理和平台兼容性方面有所提升,推荐用于大部分Windows平台的HTTP应用。 在编程模型上,无论是WinInet还是WinHttp,都涉及三个核心对象:Session、Connection和Request。Session是启动网络操作的起点,用于初始化内部数据结构并设置如代理服务器这样的属性。Connection对象代表与远程服务器的会话,Request则用于发送HTTP请求和接收响应。WinInet和WinHttp都提供了创建和管理这些对象的API。 WinInet的API行为受IE设置影响,例如,代理服务器配置、自动拨号服务、Cookie处理和持久化。相比之下,WinHttp不存储这些信息,它提供了更直接的控制和更高的安全标准。对于需要跨平台或者有特定HTTP需求的开发者来说,WinHttp可能是更好的选择。 转换方案 微软官方提供了将现有的WinInet API应用程序转换为WinHttp API的指导,以利用WinHttp的增强功能和性能。转换过程可能包括重新设计网络层架构,更新API调用,以及处理WinHttp特有的属性和行为,例如设置代理、处理身份验证和管理会话。 在性能方面,WinHttp通常比WinInet更快,因为它优化了并发请求处理和资源管理。对于需要高效处理大量HTTP请求的服务器端应用,WinHttp的这种优势尤为重要。同时,WinHttp还支持异步操作,使得程序在等待网络响应时可以执行其他任务,提高了整体程序的响应性和效率。 总结来说,WinInet和WinHttp各有优缺点,选择哪个取决于具体的应用场景和需求。如果项目对安全性、性能和跨平台兼容性有较高要求,WinHttp是更优的选择。而对于需要与IE浏览器深度集成或者需要处理多种网络协议的项目,WinInet可能更为合适。在实际开发中,应根据项目特性权衡这两个库的利弊,做出明智的决策。"
2018-04-15 上传
WinHTTP提供以下功能: WinHttpAddRequestHeaders 向HTTP请求句柄添加一个或多个HTTP请求标头。 WinHttpCheckPlatform 确定WinHTTP是否支持当前平台。 WinHttpCloseHandle 关闭单个 HINTERNET句柄。 WinHttpConnect 指定HTTP请求的初始目标服务器。 WinHttpCrackUrl 将URL分为其组成部分,例如主机名和路径。 WinHttpCreateProxyResolver 创建WinHttpGetProxyForUrlEx使用的句柄。 WinHttpCreateUrl 从组件部分创建URL,例如主机名和路径。 WinHttpDetectAutoProxyConfigUrl 查找代理自动配置(PAC)文件的URL。此功能报告PAC文件的URL,但不下载该文件。 WinHttpFreeProxyResult 释放从以前的调用WinHttpGetProxyResult检索的数据。 WinHttpGetDefaultProxyConfiguration 从注册表中检索默认的WinHTTP代理配置。 WinHTTPGetIEProxyConfigForCurrentUser 获取当前用户的Internet Explorer(IE)代理配置。 WinHttpGetProxyForUrl 检索指定URL的代理信息。 WinHttpGetProxyForUrlEx 检索指定URL的代理信息。 WinHttpGetProxyResult 检索到调用的结果WinHttpGetProxyForUrlEx。 WinHttpOpen 初始化应用程序对WinHTTP功能的使用。 WinHttpOpenRequest 创建HTTP请求句柄。 WinHttpQueryAuthSchemes 返回服务器支持的授权方案。 WinHttpQueryDataAvailable 返回可立即与读取数据的字节数 WinHttpReadData。 WinHttpQueryHeaders 检索与HTTP请求相关联的头信息。 WinHttpQueryOption 在指定的句柄上查询Internet选项。 WinHttpReadData 从WinHttpOpenRequest函数打开的句柄中读取数据 。 WinHttpReceiveResponse 结束由WinHttpSendRequest启动的HTTP请求 。 WinHttpResetAutoProxy 重置自动代理。 WinHttpSendRequest 将指定的请求发送到HTTP服务器。 WinHttpSetCredentials 将所需的授权凭证传递给服务器。 WinHttpSetDefaultProxyConfiguration 在注册表中设置默认的WinHTTP代理配置。 WinHttpSetOption 设置Internet选项。 WinHttpSetStatusCallback 设置WinHTTP可以在操作过程中进行调用的回调函数。 WinHttpSetTimeouts 设置涉及HTTP事务的各种超时。 WinHttpTimeFromSystemTime 根据HTTP版本1.0规范格式化日期和时间。 WinHttpTimeToSystemTime 获取HTTP时间/日期字符串并将其转换为 SYSTEMTIME结构。 WinHttpWriteData 将请求数据写入HTTP服务器。 WinHttpWebSocketClose 关闭WebSocket连接。 WinHttpWebSocketCompleteUpgrade 完成由WinHttpSendRequest启动的WebSocket握手。 WinHttpWebSocketQueryCloseStatus 获取服务器发送的关闭状态。 WinHttpWebSocketReceive 从WebSocket连接接收数据。 WinHttpWebSocketSend 通过WebSocket连接发送数据。 WinHttpWebSocketShutdown 向WebSocket连接发送关闭框架