Exemple #1
0
        private void btnEntrar_Click(object sender, EventArgs e)
        {
            int porta;

            if (string.IsNullOrWhiteSpace(txtHost.Text))
            {
                MessageBox.Show("Preencha o host corretamente.", "Trova", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtHost.Focus();
                return;
            }

            if (!int.TryParse(txtPorta.Text, out porta))
            {
                MessageBox.Show("Preencha a porta corretamente.", "Trova", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtPorta.Focus();
                return;
            }

            if (string.IsNullOrWhiteSpace(txtApelido.Text))
            {
                MessageBox.Show("Preencha o apelido corretamente.", "Trova", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtApelido.Focus();
                return;
            }

            TcpClient tcpClient;

            try
            {
                tcpClient = new TcpClient(txtHost.Text, porta);
            }
            catch (Exception)
            {
                MessageBox.Show("Falha ao conectar com o servidor.", "Trova", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var cliente = new Cliente(tcpClient);
            cliente.Apelido = txtApelido.Text;

            cliente.Enviar(new Entrar() { Apelido = cliente.Apelido });

            var resp = cliente.Receber();

            if (resp as Ok != null)
            {
                var frm = new frmMensagens(cliente);
                frm.Show();

                abriuMensagens = true;

                Close();

            }
            else if (resp as Erro != null)
            {
                var erro = (Erro)resp;
                MessageBox.Show(erro.Mensagem, "Trova", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemple #2
0
        private void AceitarNovoCliente(TcpClient tcpClient)
        {
            var cliente = new Cliente(tcpClient);

            var entrar = (Entrar)cliente.Receber();

            if (clientes.ContainsKey(entrar.Apelido))
            {
                cliente.Enviar(new Erro() { Mensagem = "Apelido já está em uso." });
                cliente.Encerrar();
                return;
            }

            cliente.Apelido = entrar.Apelido;
            cliente.RecebeuMensagem += cliente_RecebeuMensagem;
            cliente.DisparouException += cliente_DisparouException;
            cliente.Desconectou += cliente_Desconectou;

            lock (this)
            {
                clientes.Add(cliente.Apelido, cliente);
                cliente.Enviar(new Ok());
                NotificarMudancaListaClientes();
            }

            EnviarMensagem(new AvisoServidor()
            {
                Aviso = $"{cliente.Apelido} entrou na sala."
            });

            cliente.Iniciar();
        }