Limite de connexion Java ServerSocket?

Je courais quelques tests avec des sockets, et j'ai rencontré un certain comportement étrange: Un ServerSocket va refuser les connexions après la 50e le Socket client se connecte à elle, même si ce client socket est fermée avant que l'autre est ouvert, et que, même si un délai est ajouté entre les connexions.

Le programme suivant est mon code expérimental, qui, dans son état actuel, déclenche pas d'exception et se termine normalement. Cependant, si la taille de la matrice de Socket[] clients est augmentée au-delà de 50, tous les sockets client tente de se connecter après la 50e connexion refusée par le serveur de socket.

Question: Pourquoi est 50 le comte à qui les connexions socket-ci sont refusées par un serveur de socket?

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();
    }
}

J'ai exécuter des tests où un autre de 50 douilles de se connecter à un autre serveur local, et pas de problème avec 100 sockets être ouvert et fermé, donc j'en ai déduit que c'est la socket serveur refuse les connexions, et pas une certaine limite de l'ouverture de sockets client, mais j'ai été incapable de découvrir pourquoi le socket serveur est limité à 50 connexions, même s'ils ne sont pas connectés en même temps.

source d'informationauteur Vulcan