Windows XP SP3 TCP/IP无缓冲区空间

问题描述:

我需要使用Java创建1000个服务器套接字。之间创建600和700插座之间我得到这个错误:Windows XP SP3 TCP/IP无缓冲区空间

05.04.2012 10:23:57 java.net.SocketException: No buffer space available (maximum connections reached?): listen at sun.nio.ch.ServerSocketChannelImpl.listen(Native Method) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:127) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:52) at channelserver.NIOAppServer.initSelector(NIOAppServer.java:40) at channelserver.NIOAppServer.(NIOAppServer.java:27) at channelserver.NIOServer.main(NIOServer.java:433) at channelserver.NIOServer.main(NIOServer.java:438)

之后,我的电脑重新启动。 我试图编辑注册表设置MaxUserPort = 65534和MaxFreeTcbs = 2000,但它没有帮助。 我还能做什么? 在http://serverfault.com有人告诉我说它可能与JDBC有关,但我只连接到DB一次。我使用SQLite。 有什么建议吗?

以防万一有人也会遇到这个问题。
最后在我看来,这只是WinXP的问题。我用更多的内存尝试了相同的代码 - 结果是一样的。但是当我在Win7上尝试过它时,即使使用了1200个插槽,也可以正常工作。
因此,WinXP不适合这样的任务。

在Windows XP上有半打开连接的限制来打破此规则,您需要修补您的tcpip.sys驱动程序(但它是不适用的)或使用Windows Vista/7等现代操作系统时,它们没有这些限制。

+0

我读过它了。我目前有10个连接的限制,但仍能够处理大约300个正在运行的客户端 - 服务器连接。不要认为这是原因 – Natalia 2012-04-05 08:48:25