如何将多个用户连接在一起并发送每个连接的用户信息? (Java)[关闭]

Posted

技术标签:

【中文标题】如何将多个用户连接在一起并发送每个连接的用户信息? (Java)[关闭]【英文标题】:How can I connect multiple users together and send each connected user information? (Java) [closed] 【发布时间】:2021-07-08 17:33:04 【问题描述】:

我正在使用 Java 制作一个 (android) 应用程序,该应用程序要求我创建一个人可以托管然后其他用户可以加入的房间,然后让所有用户同时做某事。

我的套接字服务器知识非常有限,所以我的理论是当用户决定托管房间时打开服务器,然后其他用户可以连接到该服务器,然后每个连接的用户都收到相同的信息.有人能指出我正确的方向吗,顺便说一下,我正在用 Java 编写这个(Android)应用程序,我将不胜感激。我对这一切都很陌生,所以请放纵一下。

【问题讨论】:

【参考方案1】:

您的问题非常复杂。 如果使用 TCP 协议,则必须使用更多线程。 当客户端选择作为主机时,它将在 IpAddress 和端口上打开一个 ServerSocket。您可以查看 javaDoc 了解详细信息。 此时此客户端必须创建更多线程(使用java.lang.Threadjava.lang.Runnable)。 每次另一个客户想要加入房间时,它都会在另一个线程上。 您可以使用监视器来共享数据。 例如:

try 

        ServerSocket serverSocket = new ServerSocket(PORT);

        while (isOpen) 
            if (serverSocket != null) 
                Socket client= serverSocket.accept();
                new ComunicateClientThread(client, monitor).start();
            
        

     catch (EOFException e) 
        e.printStackTrace();
     catch (Exception e) 
        e.printStackTrace();
    

使用 TCP 协议,每个客户端都必须始终保持连接。 当客户选择进入现有房间时,他必须知道主机的 Ip 和端口。它将创建一个 Socket,因此可以使用 Stream 启动通信。 例如:

try 
        Socket socket = new Socket(address, port);
        ObjectInputStream inputData = new ObjectInputStream(socket.getInputStream());
        ObjectOutputStream outputData = new ObjectOutputStream(socket.getOutputStream());

     catch (IOException | ClassNotFoundException e) 
        e.printStackTrace();
    

我希望我很清楚。如果您有其他问题,请告诉我,并为我的英语不好感到抱歉

【讨论】:

以上是关于如何将多个用户连接在一起并发送每个连接的用户信息? (Java)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

具有多个模式和用户的连接池 Postgres

如何将系统表或信息架构表与 Redshift 中的用户定义表连接起来

Jmeter单个长连接发送多个Sample

向多线程 iocp 服务器中的新连接用户发送连接用户列表

如何在 Laravel 中使用多个数据库并随用户更改数据库连接? [复制]

微信小程序webSocket多人通信案例