CAsyncSocket是一个异步非阻塞Socket封装类。CAsyncSocket::Create()有一个参数指明了要处理的Socket事件。用户关心的事件被指定后,这个Socket默认就被用作了异步方式。
CAsyncSocket将事件交给用户的过程:
CAsyncSocket的Create()函数执行后,除了Socket外还创建一个SocketWnd窗口对象外,并使用WSAAsyncSelect()将创建的Socket对象与该窗口关联,,以让该窗口来处理Socket事件(消息),CSocketWnd收到Socket事件之后只是简单的回调CAsyncSocket::Connect(),CAsyncSocket::OnAccept(),CAsyncSocket::OnSend()等虚函数,所以CAsyncSocket派生类只需要在这些虚函数里添加发送和接受代码。
除了在CreateSelect()在Create()函数中指定Socket要处理的事件外,用户还可以通过调用AsyncSelect()函数来指定。AsyncSelect()函数用组合标记定义了激发那些事件。AsyncSelect函数原型如下:
BOOL AsyncSelect(long IEvent=FD_READ}FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE);
关闭所有激发的事件AsyncSelect(0);