0

我在 unix(OSX) 机器上使用 kqueue 制作了一个 tcp/ip echo 服务器。它旨在打开 100 个 tcp/ip 端口并每个端口接受 4000 个客户端。我使用 15 台其他机器建立了大约 230,000 个连接。(每个进程 4000 个连接,每盒 4 个进程)

似乎服务器可以接受更多,但问题出在客户端。建立很多连接是有限制的。如 Windows XP - 3000, Windows7 & Unix - 16384 ..

限制对吗?我错了吗?我想在单个客户端上建立尽可能多的连接,例如 500,000 / 机器。

我怎么能克服?

4

2 回答 2

0

我想在单个客户端上建立尽可能多的连接,例如 500,000 / 机器。

你不能。TCP 连接由元组 {protocol, source address, source port, target address, target port} 标识。这五个元素中有四个是固定的。剩下的元素,源端口,最多只能有 65535 个不同的值,因为端口号有 16 位,不能为零。

因此,您对同一客户端的 500,000 次连接的预期过于乐观了大约 10 倍。

于 2013-04-24T10:14:46.810 回答
0

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

于 2013-04-24T12:20:45.940 回答