分享
 
 
 

我理解的完成端口

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

参考:

1、http://community.csdn.net/Expert/topic/3056/3056877.xml?temp=.8741724

2、<<Windows网络编程2>>第8章

3、http://community.csdn.net/Expert/topic/2646/2646592.xml?temp=.9986383

完成端口的定义在参考1、2中已经讲得够详细了,参考1是fzd999 (花差花差)经验的总结,写得详细透彻,是学习完成端口一篇好文章。参考2更不用说了是Windows网络编程的必备。

以前使用完成端口套用的是这两篇文章中都提到的框架。今天放假总结以前学习的东西,发现对完成端口只知其所然不知其所以然,就好像一门武功只知道招式但不理解为何招式这般。静下心来发现参考1,2好像缺少了什么东西。

参考1中提到参考完成端口类似于消息队列(原话为:其实说穿了IOCP不就是一个消息队列嘛!),我觉得这种说法不是很恰当,参考2提到完成端口基于Win32重叠I/O,这重叠I/O又如何解释呢?

参考3中包含了对此的解释——为了避免CPU等待较慢的I/O操作而采用的一种方式,当CPU执行你的代码时遇上一个I/O请求后,系统为你开一根内部线程去处理I/O请求,并且你的线程并不挂起。这好比说把同步的事件做成异步了,对网络编程就是把WSARecv和WSASend变成异步函数了。为了实现同步可以调用MultiObject()和GetOverlappedResult()就可以得到I/O完成的消息,然后再对其作相应的处理。

对完成端口来说,将一个套结字邦定到完成端口后,WSARecv和WSASend会立即返回,提高了系统的效率。可以调用GetQueuedCompletionStatus来判断WSARecv和WSASend是否完成。这样主程序就可以完全等待接受新的连接,线程程序来等待WSARecv和WSASend是否完成了。我想这也是完成端口的真正含义吧。

有了这种观点就可以理解参考2第8章的例子了。主线程接受到一个连接后,调用WSARecv等待该连接发送的数据(不阻塞,由完成端口实现数据的接受完毕判断)。在线程函数中接受完毕,然后用WSASend函数发送给客户数据(同样是不阻塞,直接返回,由完成端口判断数据是否发送完毕)。这样在线程函数中需要区分是发送完毕还是接受完毕。如果是发送完毕,需要调用一个WSARecv函数等待该连接下一次发送数据。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有