您的位置 首页 百科问答

CSocket

CSocket

CSocket是MFC在CAsyncSocket基础上派生的一个同步阻塞Socket的封装类,它的定义包含在afxsock.h中。它是如何又把CAsyncSocket变成同步的,而且还能响应同样的Socket事件呢?

其实很简单,CSocket在Connect()返回WSAEWOULDBLOCK错误时,不是在OnConnect(),OnReceive()这些事件终端函数里去等待。你先必须明白Socket事件是如何到达这些事件函数里的。这些事件处理函数是CSocketWnd窗口对象回调的,而窗口对象收到来自Socket的事件,又是靠线程消息队列分发过来的。总之,Socket事件首先是作为一个消息发给CSocketWnd窗口对象,这个消息肯定需要经过线程消息队列的分发,最终CSocketWnd窗口对象收到这些消息就调用相应的回调函数(OnConnect()等)。

所以,CSocket在调用Connect()之后,如果返回一个WSAEWOULDBLOCK错误时,它马上调用一个用于提取消息的函数PumpMessage(...),就是从当前线程的消息队列里取关心的消息.

想要了解更多“CSocket”的信息,请点击:CSocket百科

上一篇 弗朗索瓦·普拉斯(法国儿童文学作家)
下一篇 哈哈画报探宝器
扫一扫,手机访问

扫一扫,手机浏览