如何确定当前系统允许的“积压”的最大值?

时间:2011-06-18 11:54:42

标签: java sockets

我正在使用ServerSocket而我没有看到/找到 backlog 限制是什么。文档没有说明这一点:

http://download.oracle.com/javase/6/docs/api/java/net/ServerSocket.html#ServerSocket(int,int)

我的代码是这样的:

serverSocket = ServerSocketChannel.open();
serverSocket.socket().bind(null, 10000);

但我认为如果系统没有足够的RAM,10000可能会太多。那么有没有办法确定我可以使用的积压的最大值?

似乎在c ++中你可以使用SOMAXCONN - Java是否存在类似的东西?

1 个答案:

答案 0 :(得分:0)

如果有,则系统依赖于:Windows

  

backlog参数有限   (默默地)到合理的价值   由基础服务确定   供应商。非法值被替换   按最近的法定价值。有   找不到标准条款   实际积压值。

Linux说明它有点不同,但你需要通过sysctl接口(或可能是/ proc)。

在任何情况下,您似乎都需要执行一些特定于系统的代码。

我相信大多数实现只会使用它们的最大值,如果指定的值“太大”,那么这可能不是您的应用程序的问题?