用TCP是不可能做到几十万并发连接的,即使用异步连接也不行。主要原因是因为每个保持连接的TCP都需要一个计时器,操作系统需要轮询刷新这些计时器。不断轮询这些TCP连接很费时,所以操作系统一般只能同时支持几千个计时器。如果想在TCP上做到单机每秒几十万连接,必须用高端的Unix小型机柜,一个机柜8到16个主机,每个主机4个CPU,运行在cluster 4以上的并行处理模式。这样整个机柜对外只是一台主机,客户端编程变化也不大。如果用udp方式,那么做到每秒几十万连接就很简单。我曾经用ACE库在一台5年前的单CPU笔记本电脑上,基于Windows 2000做到每秒10万连接。我试过自己直接用windows socket,效率还不如ACE。毕竟ACE底层关键部分还是用汇编的!udp最大的问题就是不能发超过1.4K的包,如果超过了你就必须自己封装。我试过自己封装,效率还不如TCP,因为自己封装的代码是工作在用户层,不是内置在系统核心。用UDP实现基于TCP的连接,每秒理论速率只能传送240k,实际做到180k以上就不错了。TCP就没这个限制,再多也可以。