16.4.2 使用CAsyncSocket类
因为CAsyncSocket类较好的封装了Windows Socket API,因此使用CAsyncSocket类的步骤与直接使用WinSocket API的步骤类似,步骤如下:
(1)构造CAsyncSocket对象并使用对象创建底层的SOCKET句柄。代码如下:
- CAsyncSocket* pSocket = new CAsyncSocket; // 创建CAsyncSocket对象
- pSocket->Create(6650, SOCK_DGRAM ); // 创建无连接套接字
上面代码使用Create()函数指定端口和地址,创建了一个无连接套接字。
(2)如果套接字是客户端,则使用Connect()函数连接到服务器套接字;如果套接字是服务器套接字,则调用Listen()函数启动监听,等待接收来自服务器端的套接字。当监听到来自服务器端的套接字后,调用Accept()函数接收套接字。接收连接后,可以通过密码或地址等信息验证客户端套接字的身份。
(3)通过CAsyncSocket对象的成员函数执行双向的数据通信。
(4)销毁CAsyncSocket对象。如果套接字对象在堆栈上,则析构函数会在套接字变量超出作用范围后,自动执行;如果使用new操作符创建套接字,则需要使用delete操作符销毁对象。析构函数调用对象的Close()函数关闭套接字连接。
在创建CAsyncSocket对象时,对象封装了Windows的SOCKET句柄并提供了在此句柄上的操作。当用户使用CAsyncSocket对象时,必须要处理阻塞操作、接收和发送机制使用的字节顺序以及Unicode字符集和多字节字符集的转换等问题。