使用C++、WinINet实现HTTP下载

最近用wxWidgets在Win平台下做一个项目,涉及到从http服务器上下载文件,用wxHTTP发现其在内网下载一个100多k的文件要10多秒,不敢恭维,转而考虑使用boost中的网络库但考虑到要增加程序exe的大小,就打算用socket来封装一个,无意之中在msdn上瞄到WinINet这个东东,所以就尝试尝试!

使用WinINet实现HTTP下载步骤如下:

1.准备工作。在使用WinINet函数前,要调用 InternetAttemptConnect 函数来检测网络连接的存在否。使用 InternetCheckConnection 函数来ping服务器是否畅通。
2.初始化WinINet。使用 InternetOpen 函数来建立起网络连接环境。该函数并没有连接到网络以校验设置的环境的正确性。该函数会返回一个环境句柄HINTERNET。
3.使用InternetConnect函数在一个网络连接环境中建立会话。一个会话包括了站点信息、连接参数等。对于HTTP协议,该函数并不会管理和建立连接到站点。该函数返回一个会话句柄HINTERNET。
4.使用HttpOpenRequest来开启一个请求、 使用HttpAddRequestHeaders来添加额外的请求属性、使用HttpSendRequest来发送请求,在HttpSendRequest时才会真正建立起连接。对于下载来讲,只有Get请求,所以不讨论具体的请求格式或内容,具体的可参考HTTP的标准
5.递归使用 InternetQueryDataAvailable 函数查询当前已下载的内容的长度,使用 InternetReadFile 函数来读取下载的内容。这里仅用了阻塞下载的方式,WinINet的HTTP也支持异步下载。
6.下载完成,关闭各句柄。

收工!


源码:

http://download.csdn.net/detail/revofu/5003976

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值