我有一个使用Java的多线程服务器,但是我想将连接的客户端数限制为2。这是一个基本应用程序,仅用于测试。

在我的服务器上,我有一个int userNo属性,该属性为客户端分配0或1的值。

我的问题是,是否有更好的方法来处理此问题。我最多只希望连接2个客户端,我希望我的应用程序忽略其他任何请求。

伪代码:

    if(userNo == 0) {
    this is player 1;
    }
    if (userNo == 1) {
    this is player 2;
    }
    else {
    do nothing
    }

最佳答案

我会做这样的事情:

int connectedClientCount = 0;
// ...
while(true) {
    ServerSocket ss = ...
    Socket s = ss.accept();
    if(connectedClientCount == 2) {
        // Do stuff to tell connected Client that he is rejected because of max clients...
    } else {
        connectedClientCount++;
        // cool stuff...
    }
}


和您代码中的其他位置(在客户端断开连接时执行)

public void clientDisconnected() {
    connectedClientCount--;
}


由于简单起见,在此示例中,我不使用线程同步。

09-28 06:52