Java ServerSocket лимит подключения?

Я провел несколько тестов с сокетами и столкнулся с некоторым странным поведением: ServerSocket откажется от соединений после того, как к нему подключится 50-й клиентский сокет, даже если этот клиентский сокет будет закрыт до открытия следующего, и даже если задержка будет добавлено между соединениями.

Следующая программа - мой экспериментальный код, который в своем текущем состоянии не выдает никаких исключений и завершается нормально. Однако, если размер массиваSocket[] clients больше 50, любые клиентские сокеты, пытающиеся подключиться после 50-го соединения, отклоняются серверным сокетом.

Вопрос:Почему 50 - число, при котором сокет-соединения отклоняются серверным сокетом?

public static void main(String[] args) {
    try (ServerSocket server = new ServerSocket(2123)) {
        Socket[] clients = new Socket[50];
        for (int i = 0; i < clients.length; i++) {
            clients[i] = new Socket("localhost", 2123);
            System.out.printf("Client %2d: " + clients[i] + "%n", i);
            clients[i].close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Я запустил тесты, где еще 50 сокетов подключаются к другому локальному серверу, и при открытии и закрытии 100 сокетов не возникало проблем, поэтому я 'Мы пришли к выводу, что сокет сервера не разрешает подключения, а не какой-либо предел открытия клиентских сокетов, но я не смог выяснить, почему сокет сервера ограничен 50 подключениями, даже если они не подключены одновременно.

Ответы на вопрос(4)

Ваш ответ на вопрос