java - 无法向所有客户端发送消息

标签 java networking client-server chat

我想从服务器向所有客户端发送消息。

我的方法是创建一个当前连接服务器的所有客户端的ArrayList。 如果任何客户端发送消息,我会遍历 ArrayList 并向每个客户端发送消息。

问题是我的客户没有收到任何消息。

这是我在服务器端的发送方法:

private void message() {
    while (true) {
        DataInputStream fromClient;
        try {
            fromClient = new DataInputStream(socketNew.getInputStream());
            message = fromClient.readUTF();
            for (Socket s:socs) {
                System.out.println(message);

                DataOutputStream toClient = newDataOutputStream( s.getOutputStream() );
                toClient.writeUTF(message);
            }
            message="";

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }       
}

这是我在客户端的接收方法:

private void receive_data() {

    {
        DataInputStream fromServer;
        try {
            fromServer = new DataInputStream(socket.getInputStream());
            message = fromServer.readUTF();
            console(message);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }   
}

关于我可能做错的地方有什么建议吗?
感谢您抽出时间。

最佳答案

  • 不能混合使用 println()readUTF()。 readUTF() 唯一能理解的是由writeUTF()。
  • 您需要在套接字的生命周期内使用相同的流或读取器/写入器。

关于java - 无法向所有客户端发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35393302/

相关文章:

java - Glob 语法不适用于 Windows PathMatcher

java - getApplicationContext() 返回 null,但在其他 Activity 中有效

java - 从本地测试环境到现场站点

c++ - Qt GET请求奇怪响应

sockets - Haskell 中的原始套接字

java - 在 Android 中发送 POST 数据

java - Maven 没有下载 pom 类型的任何依赖项

docker - 运行 jenkins 容器时如何识别要使用的 docker 主机 ip

sql-server - SQL Server 驱动程序和 SQL Server 网络接口(interface)之间的关系

linq - 在多层应用程序中,是否应该允许客户端将自己的 linq 表达式发送到服务器?