Chinaunix首页 | 论坛 | 博客
  • 博客访问: 569174
  • 博文数量: 1357
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 14950
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-14 20:23
文章分类

全部博文(1357)

文章存档

2010年(1357)

我的朋友

分类:

2010-09-18 11:48:44

  codeproject上有一篇老美写的关于http异步的文章:。   我做http异步的时候,也是参考了这篇文章,受益匪浅。今天特地翻译出来,与大家共飨。   wininet http的异步方式使用   绪论   如果你曾经深入msdn研究过wininet api,你会注意到可使用异步方式且该方式是被推崇的。   当你决定使用该方式时,你却找不到如何使用异步的说明。网上也没有任何例子。研究了很长时间,也做了很多试验,我最终决定着手来填补一份(非官方)空缺的文档。   为什么异步方式是最好的?因为它能够正确的处理超时。而在ie5.5下wininet缺少此功能。   如果你试图使用terminatethread或closehandle函数来处理超时(这些函数在msdn文档中有介绍),你将落入各种各样的陷阱中。   以下条件中异步测试成功:单处理器和多处理器的winnt4系统下的ie4.01sp3, ie5.0, ie5.01, ie5.5sp1,压力环境(12小时不间断地在多处理器nt服务器下运行15个并发实例)。   原理   使用wininet函数的异步方式,你必须按照正确的顺序:   1.使用internet_flag_async打开任务。   2.使用internetsetstatuscallback设置回调。   3.使用internetopenurl打开连接。   4.如果internetopenurl返回null且getlasterror的值是error_io_pending:   1)等待回调函数返回internet_status_handle_created通知,保存连接句柄;   2)等待回调函数返回internet_status_request_complete通知。   5.解析header里的vontent-length字段,创建一个internet_buffers结构:   1)dwstructsize = sizeof(internet_buffers);   2)lpvbuffer = 你申请的缓冲; 如果喜欢windows mobile下wininet的异步使用方法请收藏或告诉您的好朋友.
阅读(245) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~