说到Windows应用层网络通信不得不提winsock,winsock是工作在TCP/IP层的应用层(TCP/IP层分为主机到网络层【比特】、网络互联层【数据帧】、传输层【数据包】、应用层【数据段】),这是Windows给我们使用的最底层的网络通信应用层的API,winsock提供的两种模式(阻塞模式和非阻塞模式)和六种模型(blocking【阻塞】、select【选择】、WSAAsynSelect【异步选择】、WSAEventSelect【事件选择】、overlapped【重叠】、completionport【完成端口】)是众多网络软件的基础选择,根据场景的不同,它们都有各自的优缺点。
选择哪种模式和哪种模型的应用效果是不同的。阻塞模式容易使用,但已经不适应现在的网络通信对响应速度的要求,但非阻塞模式较复杂,是目前主流的模式;六种模型中主流的是使用完成端口模型(IOCP),具体原因请参考《三维游戏引擎的设计与实现》的9.3节。