客户端ABCD都通过TCP连接到服务器S,如何实现A发送一条消息,BCD都能收到? 具体实现原理是怎么样的?

解决方案 »

  1.   

    既然服务器有BCD的连接,转发又有何难?
      

  2.   

    Thread A:
      while true:
        message:=tcpChannel.readMessage()
        for each channel in tcpChannels[B,C,D]:
            channel.send(message)
      end while
      

  3.   

    public static void handleRequest(Socket clntSock, List<Socket> sockList) throws IOException{
    Msg msg = getMsgFromClient(clntSock);
    processMsg(msg); 
    for(Socket sock:sockList){
    sendMsgToCLient(msg, sock);
    }
    } 这样吗?
      

  4.   

    还要在sendMsgToClient之前加一步 if (sock != clntSock)
      

  5.   

    当有多个客服端连接上来的时候,服务器端用集合(当然用什么自己决定)把客服端的socket保存下来,然后服务器端再从保存下来的集合中取出socket,根据socket把消息转发给各个客服端。