Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java聊天(serversocket/socket)_Java - Fatal编程技术网

java聊天(serversocket/socket)

java聊天(serversocket/socket),java,Java,我需要构建一个应用程序服务器模块-一个用于通信客户端的控制台应用程序,客户端模块-一个GUI应用程序聊天,它必须连接到服务器。 问题是我需要设置连接用户数量的限制。我从配置文件中获取的限制在服务器启动时读取。计算成功接受的数量,如果达到限制,则不再接受。为什么不在while循环中设置条件 try { int numOfConnectionLimit = 10; // or read number of connection from that config file

我需要构建一个应用程序服务器模块-一个用于通信客户端的控制台应用程序,客户端模块-一个GUI应用程序聊天,它必须连接到服务器。
问题是我需要设置连接用户数量的限制。我从配置文件中获取的限制在服务器启动时读取。

计算成功接受的数量,如果达到限制,则不再接受。

为什么不在while循环中设置条件

try {

        int numOfConnectionLimit = 10; // or read number of connection from that config file

        ServerSocket listenerServ = new ServerSocket(servPort);
        System.out.println("Waiting...." + servPort + " "
                + "" + listenerServ.getInetAddress().getHostAddress());
        while (connectArray.size() < numOfConnectionLimit) {

            sock = listenerServ.accept();
            connectArray.add(sock);
            System.out.println("Client connected from: " + sock.getLocalAddress().getHostName());
            addUserName(sock);

            SocketChatServerReturn chat = new SocketChatServerReturn(sock);
            Thread X = new Thread(chat);
            X.start();

        }
    } catch (Exception exSock) {
        System.out.println("IOException on socket listen: " + exSock);
        exSock.printStackTrace();
    }
}
试试看{
int numOfConnectionLimit=10;//或从该配置文件读取连接数
ServerSocket listenerServ=新的ServerSocket(servPort);
System.out.println(“等待…”+servPort+“”
+“”+listenerServ.getInetAddress().getHostAddress());
while(connectArray.size()
您的意思是(++i是的,但我编辑了我的答案,现在它是基于
连接数组中的项目数的。您仍然可以使用该变量来计算连接数。您的答案正是我所需要的,但是如果我需要在LogInForm上为客户端发送消息,在JoptionPane上向他显示“服务器正忙”,该怎么办我将使用
多播
技术。客户端将首先连接到多播服务器,如果有连接槽,该客户端将向服务器发送消息,然后,服务器将向客户端响应有槽,现在可以连接到
服务器套接字
。如果没有,则服务器将向客户端回复“服务器正忙”或者,如果用户注销,您也可以使用谷歌java多播教程,并注意将计数减少1