示例#1
0
        public List <Usuario> ListarUsuarios(Usuario usuario)
        {
            var usuarios = new List <Usuario>();
            var cliente  = new ClienteTCP();

            try
            {
                cliente.Conectar("larc.inf.furb.br", 1012);
                var retorno     = new ListarUsuariosComando(cliente, usuario).Executar();
                var listaString = retorno.GetConteudo().Split(":");

                if (listaString.Length >= 3)
                {
                    /**
                     *
                     * A ideia deste trecho é processar os retornos, cada retorno é composto
                     * por tres pedaços, que são: "id:nome:vitorias:"
                     * Exemplo: 2756:João da Silva:4:1235:José da Silva:0:1243:Manuel da Silva:2:
                     */
                    var     c    = 0;
                    var     id   = "";
                    var     name = "";
                    Usuario u;
                    foreach (var item in listaString)
                    {
                        c++;
                        switch (c)
                        {
                        case 1:
                            id = item;
                            break;

                        case 2:
                            name = item;
                            break;

                        case 3:
                            c          = 0;               // neste ponto recomeçamos
                            u          = new Usuario(id); // montamos o obj
                            u.UserName = name;
                            usuarios.Add(u);              // adicionamos na lista
                            break;
                        }
                    }
                }
            }
            finally
            {
                cliente.Desconectar();
            }
            return(usuarios);
        }
示例#2
0
 private void btnDesconectar_Click(object sender, EventArgs e)
 {
     //Al hacer click en cerrar sesión:
     ClienteTCP.Desconectar(conductor);//Se desconecta de la conexión TCP
     MessageBox.Show("Desconexión con éxito.", "Cliente desconectado");
     lblEstadoCliente.Text = "Desconectado";
     //Los siguientes botones se habilitan:
     btnRegistrarCliente.Enabled    = true;  //Registrarse
     btnSalirCliente.Enabled        = true;  //Salir
     btnLoginCliente.Enabled        = true;  //Iniciar sesión
     txtUsuarioCliente.ReadOnly     = false; //Campo usuario se vuelve editable
     txtContraseniaCliente.ReadOnly = false; //Campo contraseña se vuelve editable
     //Los siguientes botones se deshabilitan:
     btnDesconectar.Enabled    = false;      //Cerrar sesión
     dgvViajeActivo.Enabled    = false;
     btnFinalizarViaje.Enabled = false;
     btnRefrescar.Enabled      = false;
 }
示例#3
0
        public Mensagem RetornarMensagem(Usuario usuario)
        {
            var cliente = new ClienteTCP();

            try
            {
                cliente.Conectar("larc.inf.furb.br", 1012);
                var retorno = new RetornarMensagemComando(cliente, usuario).Executar();
                if (retorno.GetConteudo().Trim().Equals(":")) // quando vier apenas ":" significa que não há msg
                {
                    return(new Mensagem("Sem mensagens\r\n"));
                }
                return(retorno);
            }
            finally
            {
                cliente.Desconectar();
            }
        }
 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
 {
     m_cliente.Desconectar();
     m_servidor.Desconectar();
 }
示例#5
0
        void ComandoRecibido(ushort comando, string[] parametros, string cadena, ClienteTCP clienteTcp)
        {
            switch (comando)
            {
            case 100:                                      //Nombre repetido
                MessageBox.Show("Error, nombre repetido");
                foreach (Cliente jugador in this.clientes) //Borrar el cliente actual
                {
                    if (jugador.ClienteTcp == clienteTcp)
                    {
                        clientes.Remove(jugador);
                        jugador.ClienteTcp.Desconectar();
                        break;
                    }
                }
                break;

            case 101:                                      //Color repetido
                MessageBox.Show("Error, color repetido");
                foreach (Cliente jugador in this.clientes) //Borrar el cliente actual
                {
                    if (jugador.ClienteTcp == clienteTcp)
                    {
                        clientes.Remove(jugador);
                        jugador.ClienteTcp.Desconectar();
                        break;
                    }
                }
                break;

            case 103:    //Versión antigua
                MessageBox.Show("El servidor necesita de una versión más reciente del programa para poder jugar en él.\r\nActualiza el programa para poder continuar.",
                                "Nueva versión necesaria", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                foreach (Cliente jugador in this.clientes)    //Borrar el cliente actual
                {
                    if (jugador.ClienteTcp == clienteTcp)
                    {
                        clientes.Remove(jugador);
                        jugador.ClienteTcp.Desconectar();
                        break;
                    }
                }
                break;

            case 12:    //Login correcto
                ActualizarDatosMapaServidor();
                break;

            case 13:    //Jugador es administrador
                foreach (Cliente jugadorLocal in clientes)
                {
                    if (jugadorLocal.ClienteTcp == clienteTcp)
                    {
                        jugadorLocal.AdministradorServidor = true;
                        break;
                    }
                }
                break;

            case 11:    //Jugador desconectado
                try
                {
                    clienteTcp.Desconectar();
                }
                catch { }
                foreach (Cliente jugadorLocal in clientes)
                {
                    if (jugadorLocal.ClienteTcp == clienteTcp)
                    {
                        MessageBox.Show("El jugador " + jugadorLocal.Nombre + " ha sido expulsado de la partida");
                        clientes.Remove(jugadorLocal);
                        try
                        {
                            foreach (ItemLista item in listaJugadores.Items)
                            {
                                if (string.Compare(item.Tag.Nombre, jugadorLocal.Nombre, true) == 0)
                                {
                                    listaJugadores.Items.Remove(item);
                                    break;
                                }
                            }
                        }
                        catch { }
                        break;
                    }
                }

                break;

            case 200:    //Informacion sobre el mapa
                actualizarMapa = false;

                bool cambiado = false;

                if (semillaMapa.Value != int.Parse(parametros[0]))
                {
                    semillaMapa.Value = int.Parse(parametros[0]);
                    cambiado          = true;
                }
                if (neutrales.Value != int.Parse(parametros[1]))
                {
                    neutrales.Value = int.Parse(parametros[1]);
                    cambiado        = true;
                }

                List <Cliente> listaClientes = mapa.Jugadores;
                if ((parametros.Length - 2) / 2 != listaJugadores.Items.Count)    //Jugadores añadidos
                {
                    cambiado = true;
                    listaJugadores.Items.Clear();

                    listaClientes = new List <Cliente>();
                    for (int contador = 2; contador < parametros.Length; contador += 3)
                    {
                        Cliente jugador = new Cliente(parametros[contador], null, 0);
                        jugador.Color = Color.FromArgb(int.Parse(parametros[contador + 1]));
                        jugador.AdministradorServidor = parametros[contador + 2] == "1" ? true : false;
                        listaClientes.Add(jugador);
                        JugadorConectado(jugador);
                    }
                }
                if (cambiado)
                {
                    mapa.Inicializar((int)semillaMapa.Value, listaClientes, (int)neutrales.Value);
                }

                actualizarMapa = true;
                break;

            case 201:    //Iniciar partida
                foreach (Cliente cliente in clientes)
                {
                    cliente.ClienteTcp.DatosRecibidos -= ComandoRecibido;
                }
                this.DialogResult = DialogResult.OK;
                this.Close();
                break;
            }
        }