如何将所有消息发送到客户端(java服务器)

时间:2015-01-19 15:07:54

标签: java server

我已经构建了一个java服务器,我想向其他客户端发送消息。这是我的客户端对等代码。该程序能够在屏幕上打印一个客户端发送给服务器的消息(但只有消息客户端发送)例如:   新用户:hi(这是服务器接收的内容以及文本客户端控制台显示的内容)

  import java.io.IOException;
  import java.io.ObjectOutputStream;
     import java.net.Socket;
    import java.util.Scanner;
       import java.util.logging.Level;
      import java.util.logging.Logger;

       public class ClientPeer extends Thread{


String username;
Socket socket;
public ClientPeer(String username,Socket socket)
{
    this.username=username;
    this.socket=socket;
}
@Override
public synchronized void run()
{
    Scanner input=new Scanner(System.in);
    String string=input.nextLine();
    while(true)
    {
        if(!string.startsWith("/w") && !string.equals("exit"))
        {
            try {
                sendMessage(string);
            } catch (IOException ex) {
                Logger.getLogger(ClientPeer.class.getName()).log(Level.SEVERE, null, ex);
            }
            System.out.println(username+":"+string);
        }
        string=input.nextLine();


    }

}
public void sendMessage(String message) throws IOException
{
    ObjectOutputStream object=new ObjectOutputStream(socket.getOutputStream());
    object.writeObject(new Message(message,username));
    object.flush();


}
public void sendMessage(String message,String whoto) throws IOException
{
    ObjectOutputStream object2=new   ObjectOutputStream(socket.getOutputStream());
    object2.writeObject(new PrivateMessage(username,message,whoto));
    object2.flush();
   }
     }

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望将消息发送给连接到服务器的其他客户端。

为此,您的服务器必须保持跟踪与其连接的所有客户端套接字。一种方法可以是在服务器端保留客户端套接字列表,当服务器收到消息时,循环遍历列表并向每个客户端发送消息。

检查此链接使用相同的机制: https://stackoverflow.com/a/27911355/891092