之前tcp方面写的很少,udp写的倒是不少,所以这次写网络版的时候遇到了很大的问题,开始认为网络并发方面iocp完成端口肯定是优势架构,于是开始拜读王艳平那本书,看个8成懂,开始进行测试--iocpsys,发现线程池处理时保的顺序在设置线程数2以上的时候出错,书中给的链表数据结构不能够处理好包号排序的问题,不知有没有具体调试过这个程序的,codeproject上有个巨复杂的,而且不能判断恶意连接;继而测试IOCPDemo这个但线程程序,包的顺序不会出错了,但是经过50000-1000000的数据包的测试发现会有少量数据包丢失,测试环境局域网,不应该呀,反复调整程序结果依然,网上查了下,有此种问题存在,但没有找到可行的解决方案;弃之使用最简单的WSAAsyncSelect模型,windows消息大大削弱了网络接收的能力,太慢,丢包倒是没有发现;弃之使用select模型,发现此种模型在效率和丢包上都是不错的,测试发现没有丢包发生。
关于tcp的完成端口、select模型,欢迎交流,awaterbit@gmail.com、qq:313668429