我有一个使用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--;
}
由于简单起见,在此示例中,我不使用线程同步。