字典大全

首页 汉语字典 词语字典 成语字典 诗词 中草药 中药名方 民间偏方 民间验方 酒方 粥谱 歇后语 汽车时刻表 五笔编码
旅游 动物 植物 微生物 自然天文 金融 数理化 电脑网络 健康 饮食 交通 体育 公交线路 火车时刻表 汉字转拼音
casyncsocket异步机制
当你获得了一个异步连接后,实际上你扫除了发送动作与接收动作之
间的依赖性。所以你随时可以发包,也随时可能收到包。发送、接收
函数都是异步非阻塞的,顷刻就能完成,所以收发交错进行着,你可
以一直工作,保持很高的效率。

但是,正因为发送、接收函数都是异步非阻塞的,所以仅调用它们并
不能保障发送或接收的完成。

例如发送函数send,调用它可能有3种结果:错误、部分完成、全部完
成。其中错误又分两种情况:一种是由各种网络问题导致的失败,你
需要马上决定是放弃本次操作,还是启用某种对策;另一种是“忙”,
你实际上不用马上理睬。你需要调用getlasterror来判断是哪种情况,
getlasterror返回wsaewouldblock,代表“忙”,为什么当你send得
到wsaewouldblock却不用理睬呢?因为casyncsocket会记得你的send
wsaewouldblock了,待发送的数据会写入casyncsocket内部的发送缓
冲区,并会在不忙的时候自动调用onsend,发送内部缓冲区里的数据。
同样,如果send只完成了一部分,你也不需要理睬,尚未发送的数据
同样会写入casyncsocket内部的发送缓冲区,并在适当的时候自动调
用onsend完成发送。

与onsend协助send完成工作一样,onrecieve、onconnect、onaccept
也会分别协助recieve、connect、accept完成工作。这一切都通过消
息机制完成:

在你使用casyncsocket之前,必须调用afxsocketinit初始化winsock
环境,而afxsocketinit会创建一个隐藏的csocketwnd对象,由于这个
对象由cwnd派生,因此它能够接收windows消息。一方面它会接受各个
casyncsocket的状态报告,另一方面它能捕捉系统发出的各种socket
事件。所以它能够成为高层casyncsocket对象与winsock底层之间的
桥梁:例如某casyncsocket在send时wsaewouldblock了,它就会发送
一条消息给csocketwnd作为报告,csocketwnd会维护一个报告登记表,
当它收到底层winsock发出的空闲消息时,就会检索报告登记表,然后
直接调用报告者的onsend函数。所以前文所说的casyncsocket会自动
调用onxxx,实际上是不对的,真正的调用者是csocketwnd——它是
一个cwnd对象,运行在独立的线程中。
i-worm/opanki.y←←←上一条 下一条→→→backdoor/ppdoor.bu

本站信息均由互联网搜集而来,本站不对信息的正确性负责,仅供大家参考研讨,有不妥之处还请来信指出,谢谢!
Copyright©2006-2017 网上字典大全  All Rights Reserved mail: