第7节 相关类库介绍
1)CAsyncSocket类,如图15-30所示。CAsyncSocket类的常用成员见表15-7。
CAsyncSocket类封装了Windows套接字API,提供了面向对象的网络通信功能。

图15-30 CAsyncSocket类
①TCP服务器端通信流程。
a)调用CAsyncSocket::Create函数,创建套接字并绑定端口。
b)调用CAsyncSocket::Listen函数,开始侦听,等待客户端连接。
c)调用CAsyncSocket::Accept函数,接收客户端连接并获取用于数据收发的套接字。
d)调用CAsyncSocket::Send/Receive函数,发送数据到客户端或接收客户端数据。
e)调用CAsyncSocket::Close函数,关闭数据收发套接字和侦听套接字。
②TCP客户端通信流程。
a)调用CAsyncSocket::Create函数,创建套接字并绑定端口(客户端一般使用随机端口)。
b)调用CAsyncSocket::Connect函数,使用套接字与服务器端连接。
c)调用CAsyncSocket::Send/Receive函数,发送数据到服务器端或接收服务器端数据。(https://www.daowen.com)
d)调用CAsyncSocket::Close函数,关闭套接字并断开与服务器的连接。
③UDP通信流程。
a)调用CAsyncSocket::Create函数,创建套接字并绑定端口(指定SOCK_DGRAM类型)。
b)调用CAsyncSocket::SendTo/ReceiveFrom函数,发送数据到其他计算机或接收其他计算机发来的数据。
c)调用CAsyncSocket::Close函数,关闭套接字。
表15-7 CAsyncSocket类常用成员

2)CSocket类,如图15-31所示。CSocket类的常用成员见表15-8。

图15-31 CSocket类
CSocket类是从CAsyncSocket类派生而来的,它继承了基类中的Receive、Send、ReceiveFrom、SendTo和Accept等所有操作函数。CSocket对象在执行Receive、ReceiveFrom和Accept函数时是阻塞的,而CAsyncSocket对象在执行以上函数时是非阻塞的,会返回WSAEWOULDBLOCK错误。当以上函数正在以阻塞模式执行时,如果调用CancelBlockingCall函数,则该函数调用将因为WSAEINTR错误而终止。
表15-8 CSocket类的常用成员
