//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); } } }
private void Comunicacion_IntentarLogear(MensajeLogin m) { if (m.Conectado) { _ARELogeo.Set(); // this.WindowState = FormWindowState.Minimized; } else { mensaje = m.Mensaje; _ARENoLogeo.Set(); } }
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; } }
public void conectar(string nombre) { MensajeLogin intentarLogin = new MensajeLogin(nombre, "", 0); serializador.enviarMensaje(intentarLogin); }