我正在编写一个网络服务,希望实现高并发。但是当我尝试连接到第28,234个套接字时,出现了以下错误:
[Errno 99] Cannot assign requested address
客户端是用Python编写的,服务器端是用Haskell编写的。我在Ubuntu 11.04上运行,并且:
$ ulimit -n
1048576
我该如何克服这个限制?
我正在编写一个网络服务,希望实现高并发。但是当我尝试连接到第28,234个套接字时,出现了以下错误:
[Errno 99] Cannot assign requested address
客户端是用Python编写的,服务器端是用Haskell编写的。我在Ubuntu 11.04上运行,并且:
$ ulimit -n
1048576
设置短暂端口范围为:
/proc/sys/net/ipv4/ip_local_port_range
防止您创建更多的连接。
28232 < 28284
。 - Steve-o通常的解决方法是在主机上创建额外的 IP 地址,每个 IP 地址将根据 dan_waterworth 的回答为您获得一个额外的临时端口范围,只要您将套接字绑定到接口。
Microsoft 在此话题上进行了讨论:
http://msdn.microsoft.com/en-us/library/cc150670(v=vs.85).aspx
SOCK_STREAM
还是SOCK_DGRAM
? - Turbo J