Windows XP SP3 TCP / IP没有可用的缓冲区空间

时间:2012-04-05 08:11:22

标签: java tcp windows-xp

我需要使用Java创建1000个服务器套接字。在创建600和700个套接字之间,我收到了这个错误:

  

05.04.2012 10:23:57 java.net.SocketException:没有可用的缓冲区空间(达到最大连接数?):在sun.nio.ch上收听sun.nio.ch.ServerSocketChannelImpl.listen(Native Method)。位于channel.NIOAppServer.initSelector的sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:52)sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)上的ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:127) (NIOAppServer.java:40)位于channelserver.NIOAppServer。(NIOAppServer.java:27),位于channelserver.NIOServer.main(NIOServer.java:433),位于channelserver.NIOServer.main(NIOServer.java:438)

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

2 个答案:

答案 0 :(得分:0)

Windows XP上的

限制了半开连接,打破了这个规则,你需要修补你的tcpip.sys驱动程序(但它是可以使用的)或者使用像Windows Vista / 7这样的现代操作系统它们没有这些限制。

答案 1 :(得分:0)

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