示例#1
0
        private void HandleCommand(int command)
        {
            byte[] temp;

            switch (command)
            {
            case Commands.messageToClient:
            {
                int nickSize = BitConverter.ToInt32(GetMessage(4), 0);

                String nickname = Encoding.UTF8.GetString(GetMessage(nickSize));

                int fileSize = BitConverter.ToInt32(GetMessage(4), 0);

                _server.SendMessageToClient(nickname, BitConverter.GetBytes(Commands.messageToClient));
                _server.SendMessageToClient(nickname, BitConverter.GetBytes(Nickname.Length));
                _server.SendMessageToClient(nickname, Encoding.UTF8.GetBytes(Nickname));
                _server.SendMessageToClient(nickname, BitConverter.GetBytes(fileSize));

                int count = 0;
                do
                {
                    temp   = GetMessage(0);
                    count += temp.Length;
                    _server.SendMessageToClient(nickname, temp);
                } while (count < fileSize);

                break;
            }

            case Commands.connect:
            {
                int nickSize = BitConverter.ToInt32(GetMessage(4), 0);
                temp = GetMessage(nickSize);

                Nickname = Encoding.UTF8.GetString(temp);

                Console.WriteLine(new StringBuilder("Клиент " + Nickname + " вошел в чат").ToString());

                _server.SendAllNewClient(Id, temp);

                _server.AddClientInChat();

                _server.SendActiveClients(Nickname);

                break;
            }


            case Commands.disconnect:
            {
                Console.WriteLine(new StringBuilder("Клиент " + Nickname + " покидает чат").ToString());

                _server.SendAllClientOut(Id, Encoding.UTF8.GetBytes(Nickname));

                _server.RemoveClientFromChat();

                break;
            }

            default:
                break;
            }
        }