我正在使用套接字进行一些测试,我遇到了一些奇怪的行为:在第50个客户端Socket连接之后,ServerSocket将拒绝连接,即使该客户端套接字在下一个打开之前关闭,即使延迟是连接之间添加.
以下程序是我的实验代码,它在当前状态下不抛出异常并正常终止.但是,如果Socket []客户端的数组大小增加到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个连接,即使它们没有同时连接.