예제 #1
0
 public void SendOnlineList(ClientHandler client)
 {
     List<string> users = new List<string>(onlineUsers.Keys);
     Packet packet = new Packet();
     packet.Flag = Flag.OnlineUserList;
     packet.Data = users;
     client.send(packet);
 }
예제 #2
0
 public void SetChat(ClientHandler client, Packet packet)
 {
     ChatMessage msg = (ChatMessage) packet.Data;
     if (msg.Receiver == "BROADCAST")
     {
         foreach (ClientHandler clientHandler in onlineUsers.Values)
         {
             clientHandler.send(packet);
         }
     }
     else
     {
         ClientHandler clientHandler = onlineUsers[msg.Receiver];
         clientHandler.send(packet);
         client.send(packet);
     }
 }
예제 #3
0
        public void handshakeHandler(ClientHandler client, Packet packet)
        {
            HandshakeRequest request = (HandshakeRequest) packet.Data;
            client.Username = request.Username;
            Packet rePacket = new Packet();
            rePacket.Flag = Flag.HandshakeResponse;
            HandshakeResponse response = new HandshakeResponse();

            if (onlineUsers.ContainsKey(client.Username))
            {
                response.Response = Response.INVALIDLOGIN;
                Console.WriteLine("Invalid login received");
            }
            else
            {
                response.Response = Response.OK;
                AddClient(client);
                SendOnlineList(client);
                Console.WriteLine("Client accepted.");
            }

            rePacket.Data = response;
            client.send(rePacket);
        }