java如何确定当前系统上允许的“backlog”的最大值?
我正在玩ServerSocket,但我没有看到/找到积压工作的限制是什么。文件中没有提到这一点:
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 楼答案
如果有,它将依赖于系统:对于Windows
Linux的状态稍有不同,但需要通过sysctl接口(或者可能是/proc)
在任何情况下,您都需要执行一些特定于系统的代码
我相信,如果指定的值“太大”,大多数实现只会使用它们的最大值,所以这可能不是应用程序的问题