Tcp 客户端套接字连接存在限制

Tcp 客户端套接字连接存在限制,tcp,windows-xp,client,Tcp,Windows Xp,Client,我在unix(OSX)机器上使用kqueue创建了一个tcp/ip echo服务器。它设计打开100个tcp/ip端口,每个端口接受4000个客户端。我使用另外15台机器创建了大约230000个连接。(每个单工序4000个接头,每个箱体4个接头) 服务器似乎可以接受更多,但问题出在客户端。建立大量连接是有限制的。例如WindowsXP-3000、Windows7和Unix-16384 限制是否正确?我做错了吗?我希望在单个客户端上建立尽可能多的连接,例如500000/台计算机 我怎样才能克服 我

我在unix(OSX)机器上使用kqueue创建了一个tcp/ip echo服务器。它设计打开100个tcp/ip端口,每个端口接受4000个客户端。我使用另外15台机器创建了大约230000个连接。(每个单工序4000个接头,每个箱体4个接头)

服务器似乎可以接受更多,但问题出在客户端。建立大量连接是有限制的。例如WindowsXP-3000、Windows7和Unix-16384

限制是否正确?我做错了吗?我希望在单个客户端上建立尽可能多的连接,例如500000/台计算机

我怎样才能克服

我希望在单个客户端上建立尽可能多的连接,例如500000/台计算机

你不能。TCP连接由元组{协议、源地址、源端口、目标地址、目标端口}标识。这五个元素中有四个是固定的。其余元素源端口最多只能有65535个不同的值,因为端口号有16位,不能为零


因此,您对500000个连接到同一客户端的预期是过于乐观的,大约为10倍。

您可以在客户端计算机上配置多个IPv4地址。在客户机上运行的进程应该接收源IP地址作为参数,并将连接套接字绑定到它。因此,使用10个IP地址,您可以轻松连接40万个连接。

Nokolai,您是一个天才。非常感谢。