Esempio n. 1
0
        //los usuarios deben recibir los mensajes como eventos del lado del cliente

        /*
         * TCP Client se lo paso a una clase que maneja con ID y guardar en una lista
         */
        /* private void atender(object tcpClient)
         * {
         *   Console.WriteLine("Atendiendo al cliente");
         *   TcpClient cliente = (TcpClient)tcpClient;
         *   NetworkStream stream = cliente.GetStream();
         *   StreamWriter writer = new StreamWriter(stream, Encoding.ASCII) { AutoFlush = true };
         *   StreamReader reader = new StreamReader(stream, Encoding.ASCII);
         *   while (cliente.Connected)
         *   {
         *       try
         *       {
         *           string mens = reader.ReadLine();
         *           MensajeBase msjBase = JsonConvert.DeserializeObject<MensajeBase>(mens);
         *           Console.WriteLine("Es del tipo " + msjBase.TipoMensaje);
         *           try { MensajeLogin msj = (MensajeLogin)msjBase; } catch (InvalidCastException e) { }
         *           if (nombreUsuarios.Contains(msjBase.From))
         *           {
         *               MensajeLogin respuesta = new MensajeLogin("", "", 0);
         *               respuesta.Conectado = false;
         *               respuesta.Mensaje = "Nombre de usuario ya existente";
         *               string resp = JsonConvert.SerializeObject(respuesta);
         *               Console.WriteLine("Nombre de usuario ya existente " + msjBase.From);
         *               writer.WriteLine(resp);
         *           }
         *           else
         *           {
         *               MensajeLogin respuesta = new MensajeLogin("","", 0);
         *               respuesta.Conectado = true;
         *               respuesta.Mensaje = "Conectado";
         *               nombreUsuarios.Add(msjBase.From);
         *               Console.WriteLine("El usuario se ha logeado: " + msjBase.From);
         *               string resp = JsonConvert.SerializeObject(respuesta);
         *               writer.WriteLine(resp);
         *           }
         *
         *           // manejarMensaje(msjBase,cliente);
         *       }
         *       catch (ArgumentNullException e) { }
         *   }
         *
         * }*/
        /*  private void manejarMensaje(MensajeBase msjBase,TcpClient cliente)
         * {
         *    if (msjBase.TipoMensaje == "MensajeLogin")
         *    {
         *        Console.WriteLine("Es del tipo "+ msjBase.TipoMensaje);
         *        MensajeLogin msj = (MensajeLogin)msjBase;
         *        if (nombreUsuarios.Contains(msjBase.From))
         *        {
         *            MensajeLogin respuesta = new MensajeLogin("","",0);
         *            respuesta.Conectado = false;
         *            respuesta.Mensaje = "Nombre de usuario ya existente";
         *        }
         *    }
         *    else if (msjBase.TipoMensaje == "MensajeDibujarPuntos")
         *    {
         *        Console.WriteLine("Es del tipo "+ msjBase.TipoMensaje);
         *    }
         *    else if (msjBase.TipoMensaje == "EntraSala") {
         *        Console.WriteLine("Es del tipo "+msjBase.TipoMensaje);
         *    }
         * }*/

        #endregion

        public void autenticar(object client)
        {
            TcpClient     clienteAutenticando = (TcpClient)client;
            NetworkStream stream = clienteAutenticando.GetStream();
            StreamWriter  writer = new StreamWriter(stream, Encoding.ASCII)
            {
                AutoFlush = true
            };
            StreamReader reader = new StreamReader(stream, Encoding.ASCII);

            while (true)
            {
                string      mens    = reader.ReadLine();
                MensajeBase msjBase = JsonConvert.DeserializeObject <MensajeBase>(mens);
                string      nombre  = msjBase.From;
                try { MensajeLogin msj = (MensajeLogin)msjBase; } catch (InvalidCastException e) { }
                if (estaLibreElNombre(nombre))
                {
                    MensajeLogin respuesta = new MensajeLogin("", nombre, 0);
                    respuesta.Conectado = true;
                    Cliente c = new Cliente(clienteAutenticando, nombre);
                    c.Recibir     += C_Recibir;
                    c.Desconectar += C_Desconectar;
                    lock (_ListaLocker)
                    {
                        //despues verificar sala, de momento es prueba
                        //if(conectados > 4) mandar mensaje de "server lleno"
                        //o poner al usuario en lista de espera
                        listaClientes.Add(c);
                        orden.Add(c.Id);
                    }

                    Thread HiloAtender = new Thread(c.atender);
                    Console.Out.NewLine     = "\r\n\r\n";
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine(msjBase.Fecha + ":El usuario se ha logeado: " + nombre);
                    Console.WriteLine("Total conectados " + listaClientes.Count);
                    string resp = JsonConvert.SerializeObject(respuesta);
                    writer.WriteLine(resp);
                    HiloAtender.Start();
                    break;
                }
                else
                {
                    MensajeLogin respuesta = new MensajeLogin("", "", 0);
                    respuesta.Conectado = false;
                    respuesta.Mensaje   = "Nombre de usuario ya existente ";
                    string resp = JsonConvert.SerializeObject(respuesta);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Nombre de usuario ya existente " + msjBase.From);
                    writer.WriteLine(resp);
                }
            }
        }
Esempio n. 2
0
        private void Comunicacion_IntentarLogear(MensajeLogin m)
        {
            if (m.Conectado)
            {
                _ARELogeo.Set();

                // this.WindowState = FormWindowState.Minimized;
            }
            else
            {
                mensaje = m.Mensaje;
                _ARENoLogeo.Set();
            }
        }
Esempio n. 3
0
        private void Serializador_Recibir(MensajeBase msg)
        {
            switch (msg.TipoMensaje)
            {
            case "MensajeLogin":
                if (Logear != null)
                {
                    try
                    {
                        MensajeLogin msgL = (MensajeLogin)msg;
                        Logear(msgL);
                    }
                    catch (InvalidCastException e) { }
                }
                break;

            case "MensajeEntrarSala":
                if (EntraSala != null)
                {
                    try
                    {
                        MensajeEntrarSala msgEn = (MensajeEntrarSala)msg;
                        EntraSala(msgEn);
                    }
                    catch (InvalidCastException e) { }
                }
                break;

            case "MensajeDibujarPuntos":
                MensajeDibujarPuntos msgDibPun = (MensajeDibujarPuntos)msg;
                if (Dibujar != null)
                {
                    Dibujar(msgDibPun);
                }
                break;

            case "MensajeEnviarPalabra":
                MensajeEnviarPalabra msgEnvPal = (MensajeEnviarPalabra)msg;
                if (RespuestaPalabraEnviada != null)
                {
                    RespuestaPalabraEnviada(msgEnvPal);
                }
                break;

            case "MensajeIniciarPartida":
                if (IniciarPartida != null)
                {
                    try
                    {
                        MensajeIniciarPartida msgEn = (MensajeIniciarPartida)msg;
                        IniciarPartida(msgEn);
                    }
                    catch (InvalidCastException e) { }
                }
                break;

            case "MensajeTocaDibujar":
                if (TocaDibujar != null)
                {
                    try
                    {
                        MensajeTocaDibujar msgEn = (MensajeTocaDibujar)msg;
                        TocaDibujar(msgEn);
                    }
                    catch (InvalidCastException e) { }
                }
                break;

            case "MensajeFinTrazo":
                if (FinTrazo != null)
                {
                    try
                    {
                        MensajeFinTrazo msgEn = (MensajeFinTrazo)msg;
                        FinTrazo(msgEn);
                    }
                    catch (InvalidCastException e) { }
                }
                break;

            case "MensajeContador":
                if (Contador != null)
                {
                    try
                    {
                        MensajeContador msgCon = (MensajeContador)msg;
                        Contador(msgCon);
                    }
                    catch (InvalidCastException e) {
                        Console.WriteLine("151" + e.Message);
                    }
                }
                break;

            case "MensajeUsuariosEnSala":
                if (UsuariosEnSala != null)
                {
                    try {
                        MensajeUsuariosEnSala msgUsSala = (MensajeUsuariosEnSala)msg;
                        UsuariosEnSala(msgUsSala);
                    }
                    catch (InvalidCastException e)
                    {
                        Console.WriteLine("164" + e.Message);
                    }
                }
                break;

            case "MensajeGanador":
                if (Ganador != null)
                {
                    try
                    {
                        MensajeGanador msgGanador = (MensajeGanador)msg;
                        Ganador(msgGanador);
                    }
                    catch (InvalidCastException e)
                    {
                        Console.WriteLine("180" + e.Message);
                    }
                }
                break;

            case "MensajeEmpate":
                if (Empate != null)
                {
                    try
                    {
                        MensajeEmpate msgempate = (MensajeEmpate)msg;
                        Empate(msgempate);
                    }
                    catch (InvalidCastException e)
                    {
                        Console.WriteLine("195" + e.Message);
                    }
                }
                break;
            }
        }
Esempio n. 4
0
        public void conectar(string nombre)
        {
            MensajeLogin intentarLogin = new MensajeLogin(nombre, "", 0);

            serializador.enviarMensaje(intentarLogin);
        }