Libevent IOCP 完整教程
直至今日,我都一直是个专注客户端游戏开发的程序,但是客户端毕竟是一个人的世界,是孤独的,只有网络能给客户端灵魂,加上我的社交平台梦,我毅然钻入了网络领域。然而对于一个只在大学时期做过聊天程序的我,对网络的了解实在是太少,再加上高深的IOCP,即便我看过《Windows核心编程》,但一个人也无力驾驭这 libevent IOCP,但对亏了完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三这篇文章,提升了我对IOCP的理解,让我有信心去解决libevent IOCP使用中遇到的困难。下面我将尽量讲解如何使用 libevent 2.1.4-alpha IOCP(2.0.21 版也试过,不过2.1.4修改了部分之前版本的IOCP bug,所以使用IOCP的话,个人感觉2.1.4比较适合),并将 Programming with Libevent 没有讲解到的有关 IOCP 的部分加以补充,指导你正确使用 libevent IOCP。
问题备忘:开启IOCP之后,客户端发起1000个连接,并向服务器发送的登录数据,服务器不一定能第一时间收到1000个登录数据,一般会丢失100个左右,会让人以为libevent IOCP会丢失数据,但当这些没有发出去登录数据的客户端再继续发送其他数据的时候,服务器会一并收到之前没有收到的登录数据,以及这次发送的数据。这种延迟现象我用了一天时间才发现,起初以为是数据丢失,后来发现数据没有丢失,只是没有发出去。但如何让数据第一次就能发出去,目前还不清楚。