Java:奇怪的多线程登录检查/序列

Java:奇怪的多线程登录检查/序列,java,arrays,multithreading,sockets,Java,Arrays,Multithreading,Sockets,我在一个未知的多线程服务器上发现了这个登录序列/客户端检查,该服务器是用Java编写的,但我无法理解在客户端套接字与服务器套接字进行了连接之后执行此检查的内容和原因: public static int MaxConnections = 100000; public static int[] ConnectionCount = new int[MaxConnections]; int Found = -1; for (int i = 0; i < MaxConnections; i+

我在一个未知的多线程服务器上发现了这个登录序列/客户端检查,该服务器是用Java编写的,但我无法理解在客户端套接字与服务器套接字进行了连接之后执行此检查的内容和原因:

public static int MaxConnections = 100000;

public static int[] ConnectionCount = new int[MaxConnections];

int Found = -1;

for (int i = 0; i < MaxConnections; i++)    {
    if (Connections[i] == connectedClientID)    {
        Found = ConnectionCount[i];
        break;
    }
}

if (Found < 3)  {
    System.out.println("Connection accepted from " + connectedClientID + ": " + socket.getPort() + ".");
    connectionHandler.newConnectingClient(socket, connectedClientID);
} else {
    System.out.println("Server: Rejected " + connectedClientID + ":" + socket.getPort());
    socket.close();
}
publicstaticintmaxconnections=100000;
公共静态int[]ConnectionCount=new int[MaxConnections];
int-Found=-1;
对于(int i=0;i

感谢您的解释/提示。

服务器显然只允许每个客户端IP地址有3个连接。不幸的是,在Java中没有办法在接受TCP连接之前拒绝它。所以,连接在接受它之后就被关闭了。@nosid说了什么。这将使服务器免受来自单个主机的DOS攻击。或者,考虑到代码的质量,它会尝试这样做。但是,如果第一次与服务器建立了三个连接,那么当第三个插槽被占用时,其他人以后如何连接到服务器?此检查是否将可能连接的最大数量限制为三个?@OleKristianMøller Hansen
Found
未设置为索引
i
,而是设置为索引
i
处的
ConnectionCount
数组中的值。您发布的代码中未显示
ConnectionCount
数组中该值的设置或更新方式。