Как я могу определить максимальное значение «backlog», которое разрешено в текущей системе? - PullRequest
0 голосов
/ 18 июня 2011

Я играю с ServerSocket и не вижу / не вижу, что такое limit из backlog .Документы ничего не говорят об этом:

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

Мой код такой:

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

но я предполагаю, что 10000может быть слишком много, если системе не хватает оперативной памяти.Так есть ли способ определить максимальное значение для backlog , которое я могу использовать?

Похоже, что в c ++ вы можете использовать SOMAXCONN - существует ли нечто подобное для Java?

1 Ответ

0 голосов
/ 18 июня 2011

Если бы они были, это зависело бы от системы: для Windows

Параметр backlog ограничен (молча) до разумного значения, как определяется базовым сервисом поставщик. Незаконные значения заменяются по ближайшему юридическому значению. Есть нет стандартного положения, чтобы узнать фактическое значение невыполненной работы.

Linux утверждает это немного по-другому, но вам нужно будет пройти через интерфейс sysctl (или, возможно, /proc).

В любом случае может показаться, что вам нужно выполнить какой-то системный код.

Я полагаю, что большинство реализаций будут просто использовать свое максимальное значение, если указанное значение «слишком большое», так что это может не беспокоить ваше приложение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...