// Ocorre quando um novo cliente é aceito
        private void AceitaCliente()
        {
            srReceptor = new System.IO.StreamReader(tcpCliente.GetStream());
            swEnviador = new System.IO.StreamWriter(tcpCliente.GetStream());

            // Lê a informação da conta do cliente
            usuarioAtual = srReceptor.ReadLine();

            // temos uma resposta do cliente
            if (usuarioAtual != "")
            {
                // Armazena o nome do usuário na hash table
                if (JogoServidor.htUsuarios.Contains(usuarioAtual) == true)
                {
                    // 0 => significa não conectado
                    swEnviador.WriteLine("0|Este nome de usuário já existe.");
                    swEnviador.Flush();
                    FechaConexao();
                    return;
                }
                else if (usuarioAtual == "Administrator")
                {
                    // 0 => não conectado
                    swEnviador.WriteLine("0|Este nome de usuário é reservado.");
                    swEnviador.Flush();
                    FechaConexao();
                    return;
                }
                else
                {
                    // 1 => conectou com sucesso
                    swEnviador.WriteLine("1");
                    swEnviador.Flush();

                    // Inclui o usuário na hash table e inicia a escuta de suas mensagens
                    JogoServidor.IncluiUsuario(tcpCliente, usuarioAtual);
                }
            }
            else
            {
                FechaConexao();
                return;
            }
            //
            try
            {
                // Continua aguardando por uma mensagem do usuário
                while ((strResposta = srReceptor.ReadLine()) != "")
                {
                    // Se for inválido remove-o
                    if (strResposta == null)
                    {
                        JogoServidor.RemoveUsuario(tcpCliente);
                    }
                    else
                    {
                        // envia a mensagem para todos os outros usuários
                        JogoServidor.EnviaMensagem(usuarioAtual, strResposta);
                    }
                }
            }
            catch
            {
                // Se houve um problema com este usuário desconecta-o
                JogoServidor.RemoveUsuario(tcpCliente);
            }
        }
        private void BtnIniciar_Click(object sender, EventArgs e)
        {
            if (BtnIniciar.Text.Trim() == "Iniciar")
            {
                string porta = TxtPorta.Text;
                if (string.IsNullOrWhiteSpace(porta))
                {
                    MessageBox.Show("Informe a porta que o servidor irá trabalhar!");
                }
                else if (!Regex.IsMatch(porta, "[ ^ 0-9]"))
                {
                    MessageBox.Show("Informe apenas números para a porta do servidor!");
                }

                int portaConexao;
                if (!int.TryParse(porta, out portaConexao))
                {
                    MessageBox.Show("Erro ao converter a porta para inteiro!");
                }

                if (portaConexao < 0 || portaConexao > 65535)
                {
                    MessageBox.Show("Porta inválida! Informe uma porta entre 0 e 65535.");
                    return;
                }

                //Inciar servido
                try
                {
                    // Analisa o endereço IP do servidor informado no textbox
                    IPAddress enderecoIP = IPAddress.Parse(TxtIp.Text);

                    // Cria uma nova instância do objeto JogoServidor
                    mainServidor = new JogoServidor(enderecoIP, portaConexao);

                    // Vincula o tratamento de evento StatusChanged a mainServer_StatusChanged
                    JogoServidor.StatusChanged += new StatusChangedEventHandler(mainServidor_StatusChanged);

                    // Inicia o atendimento das conexões
                    mainServidor.IniciarServidor();

                    //Se der certo, alterar o status
                    TxtIp.ReadOnly      = true;
                    TxtPorta.ReadOnly   = true;
                    LabStatus.Text      = $"Ligado!";
                    LabStatus.ForeColor = System.Drawing.Color.Green;
                    BtnIniciar.Text     = "Parar";

                    // Mostra que nos iniciamos o atendimento para conexões
                    txtLogs.AppendText("Monitorando as conexões...\r\n");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro de conexão : " + ex.Message);
                }
            }
            else if (BtnIniciar.Text.Trim() == "Parar")
            {
                try
                {
                    mainServidor.DesligarServidor();
                    txtLogs.AppendText("Servidor parado...\r\n");

                    //Se der certo, alterar o status
                    TxtIp.ReadOnly      = false;
                    TxtPorta.ReadOnly   = false;
                    LabStatus.Text      = "Desligado!";
                    LabStatus.ForeColor = System.Drawing.Color.DarkRed;
                    BtnIniciar.Text     = "Iniciar";
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro de conexão : " + ex.Message);
                }
            }
            else
            {
                MessageBox.Show("Operação não programada. Reinicie a aplicação!");
            }
        }