private void AtenderServidor() {//bucle de atencion a las peticiones del servidor while (true) { byte[] msg2 = new byte[200]; server.Receive(msg2); string mensaje = Encoding.ASCII.GetString(msg2).Split('\0')[0]; string[] trozos = mensaje.Split('/'); int codigo = Convert.ToInt32(trozos[0]); switch (codigo) { case 1: //log in MessageBox.Show(trozos[1]); string mensajerecivido = trozos[1]; string logincorrecto = "Sesion iniciada correctamente"; if (string.Equals(mensajerecivido, logincorrecto)) { DelegadoMostrarVentanas ventanas = new DelegadoMostrarVentanas(MostrarVentanas); groupBox2.Invoke(ventanas, new object[] { }); Juego.Invoke(ventanas, new object[] { }); groupBox1.Invoke(ventanas, new object[] { }); Registro.Invoke(ventanas, new object[] { }); } break; case 2: //registro MessageBox.Show(trozos[1]); break; case 4: //consulta MessageBox.Show(trozos[1]); break; case 5: //consulta MessageBox.Show(trozos[1]); break; case 7: //peticion para los invitados string anfitrion = trozos[2]; partida = Convert.ToInt32(trozos[1]); string MessageBoxTitle = "Invitación de chat"; string MessageBoxContent = anfitrion + " te ha invitado a un chat cond id " + partida + "\n Deseas aceptarlo?"; string respuesta_invitation; DialogResult result = MessageBox.Show(MessageBoxContent, MessageBoxTitle, MessageBoxButtons.YesNo); switch (result) { case DialogResult.Yes: respuesta_invitation = "8/" + anfitrion + "/" + partida + "/" + usuario.Text + "/" + Convert.ToString(result) + "/1"; byte[] accept = System.Text.Encoding.ASCII.GetBytes(respuesta_invitation); server.Send(accept); ServicioChats(usuario_pc, partida); break; case DialogResult.No: respuesta_invitation = "8/" + anfitrion + "/" + partida + "/" + usuario.Text + "/" + Convert.ToString(result) + "/0"; byte[] decline = System.Text.Encoding.ASCII.GetBytes(respuesta_invitation); server.Send(decline); break; } break; case 8: //respuesta del anfitrion sobre las invitaciones partida = Convert.ToInt32(trozos[1]); string invitado = trozos[2]; string respuesta_inv = trozos[3]; MessageBox.Show("Respuesta del invitado " + invitado + " al chat de id " + partida + " es " + respuesta_inv); if (respuesta_inv == "Yes") { ServicioChats(usuario_pc, partida); } break; case 9: //recebir mensaje del chat int partida9 = Convert.ToInt32(trozos[1]); autor = trozos[2]; mensaje_chat = trozos[3]; EnviarChatForm(partida9, autor, mensaje_chat); //DelegadoParaEnviarChatMain delegado9 = new DelegadoParaEnviarChatMain(EnviarChatForm); //this.Invoke(delegado9, new object[] { partida9, autor, mensaje_chat }); break; case 999: //notificaciones de conexion int numcon999 = Convert.ToInt32(trozos[1]); DelegadoListaConectados delegado999 = new DelegadoListaConectados(PonerEnGrid); dataGridView1.Invoke(delegado999, new object[] { numcon999, trozos }); break; } } }
private void AtenderServidor()//Funcion que atiende al servidor. Dependiendo del codigo que reciba hara unas acciones. { while (true) { byte[] msg2 = new byte[80]; try { server.Receive(msg2); } catch (SocketException ex) { MessageBox.Show(ex.Message.ToString()); } string[] mensaje = Encoding.ASCII.GetString(msg2).Split(':'); int codigo = Convert.ToInt32(mensaje[0]); string contenido = mensaje[1].Split('\0')[0]; switch (codigo) { case 1: if (contenido == "0") { DelegadoInicioSesion delegadoStart = new DelegadoInicioSesion(DelegarInicioSesion); Enviar.Invoke(delegadoStart); MessageBox.Show("Sesion Iniciada"); } else { string mensaje2 = "0/" + User.Text; byte[] msg3 = System.Text.Encoding.ASCII.GetBytes(mensaje2); server.Send(msg3); server.Shutdown(SocketShutdown.Both); server.Close(); MessageBox.Show("El nombre ya está registrado"); Atender.Abort(); } break; case 2: if (contenido == "0") { DelegadoInicioSesion delegadoStart = new DelegadoInicioSesion(DelegarInicioSesion); Enviar.Invoke(delegadoStart); MessageBox.Show("Sesion Iniciada"); } else { string mensaje2 = "0/" + User.Text; byte[] msg3 = System.Text.Encoding.ASCII.GetBytes(mensaje2); server.Send(msg3); server.Shutdown(SocketShutdown.Both); server.Close(); MessageBox.Show("El nombre y/o la contraseña son incorrectos."); Atender.Abort(); } break; case 3: if (contenido == "NoEncontrado") { MessageBox.Show("No se ha encontrado el jugador"); } else if (contenido != "") { MessageBox.Show("Número de turnos:" + contenido); } else { MessageBox.Show("Error"); } break; case 4: if (contenido == "NoEncontrado") { MessageBox.Show("No se ha encontrado la partida"); } else if (contenido != "") { MessageBox.Show("Jugadores:" + contenido); } else { MessageBox.Show("Error"); } break; case 5: if (contenido == "NoEncontrado") { MessageBox.Show("No se ha encontrado el jugador"); } else if (contenido != "") { MessageBox.Show("Número de turnos:" + contenido); } else { MessageBox.Show("Error"); } break; case 6: DelegadoListaConectados delegadoLista = new DelegadoListaConectados(RellenarListaConectados); dataGridView1.Invoke(delegadoLista, new object[] { contenido }); break; case 7: DelegadoInvitacionRecibida delegadoInv = new DelegadoInvitacionRecibida(DelegarInvitacionRecibida); Invitacion.Invoke(delegadoInv, new object[] { contenido }); UsuarioInvita = contenido; break; case 8: Aceptados.Add(contenido); Respuestas.Add(contenido); MessageBox.Show(contenido + " ha aceptado la partida"); if (Invitaciones == Aceptados.Count) { MessageBox.Show("Todos los jugadores han aceptado la partida"); Empezar_Partida(); Respuestas.Clear(); Aceptados.Clear(); } else if ((Invitaciones == Respuestas.Count()) && (Respuestas.Count != Aceptados.Count())) { MessageBox.Show("Algun jugador ha rechazado la partida"); DelegadoInvitacionRechazada delegadorech1 = new DelegadoInvitacionRechazada(DelegarInvitacionRechazada); Invite.Invoke(delegadorech1); Invitaciones = 0; Respuestas.Clear(); Aceptados.Clear(); } break; case 9: MessageBox.Show(contenido + " ha rechazado la partida"); Respuestas.Add(contenido); if ((Invitaciones == Respuestas.Count()) && (Respuestas.Count != Aceptados.Count())) { DelegadoInvitacionRechazada delegadorech2 = new DelegadoInvitacionRechazada(DelegarInvitacionRechazada); Invite.Invoke(delegadorech2); MessageBox.Show("Algun jugador ha rechazado la partida"); Invitaciones = 0; Respuestas.Clear(); Aceptados.Clear(); } break; case 10: IDChat = Convert.ToInt32(contenido); MessageBox.Show("Iniciando partida " + IDChat); DelegadoInvitacionRechazada delegadorech3 = new DelegadoInvitacionRechazada(DelegarInvitacionRechazada); Invite.Invoke(delegadorech3); string mensaje3 = "13/" + IDChat + "," + User.Text + "," + EquipoBatallaPropio.GetPokemon(0).Nombre + "," + EquipoBatallaPropio.GetPokemon(1).Nombre + "," + EquipoBatallaPropio.GetPokemon(2).Nombre; byte[] msg = System.Text.Encoding.ASCII.GetBytes(mensaje3); server.Send(msg); break; case 11: int ID = Convert.ToInt32(contenido.Split('-')[0]); contenido = contenido.Split('-')[1]; int IDindex = BuscarID(ID); Chats[IDindex].EscribirMensaje(contenido); break; case 12: ID = Convert.ToInt32(contenido.Split('-')[0]); string usuario = contenido.Split('-')[1]; int salida = Convert.ToInt32(contenido.Split('-')[2]); IDindex = BuscarID(ID); if (salida == 1) { MessageBox.Show("Partida finalizada"); } else { MessageBox.Show("El usuario " + usuario + " ha abandonado la partida"); } Chats[IDindex].AbandonarPartida(); break; case 13: string[] TuEquipo = contenido.Split(','); SetEquipoPropio(TuEquipo[0], TuEquipo[1], TuEquipo[2]); DelegadoActivarInvitacion delegadoInvite = new DelegadoActivarInvitacion(DelegarActivarInvitacion); Invite.Invoke(delegadoInvite); break; case 14: string[] content = contenido.Split('-'); int IDa = Convert.ToInt32(content[0]); contenido = content[1]; content = contenido.Split(','); bool OponenteRecibido = false; if (content[0] != User.Text) { SetEquipoOponente(content[1], content[2], content[3]); Oponente = content[0]; OponenteRecibido = true; } if (OponenteRecibido == true) { ThreadStart ts2 = delegate { AbrirChat(); }; Thread forms = new Thread(ts2); forms.Start(); } break; case 15: ID = Convert.ToInt32(contenido.Split('-')[0]); contenido = contenido.Split('-')[1]; IDindex = BuscarID(ID); Chats[IDindex].bt.RecibirOrden(contenido); break; case 16: if (contenido == "0") { MessageBox.Show("Usuario Eliminado"); DelegadoDesconexion delegadoStart = new DelegadoDesconexion(DelegarDesconexion); Desconexion.Invoke(delegadoStart); } else { MessageBox.Show("No se ha podido eliminar el usuario"); } break; case 17: ID = Convert.ToInt32(contenido.Split('-')[0]); contenido = contenido.Split('-')[1]; IDindex = BuscarID(ID); Chats[IDindex].PokemonDebilitadoDelegado(contenido); break; } } }
private void atender_mensaje_servidor() { while (true) { //Recibimos mensaje del servidor byte[] msg2 = new byte[80]; server.Receive(msg2); string[] trozos = Encoding.ASCII.GetString(msg2).Split('/'); int codigo = Convert.ToInt32(trozos[0]); string mensaje = trozos[1].Split('\0')[0]; switch (codigo) { case 1: //crear usuario if (trozos[1].TrimEnd('\0') == "SI") { MessageBox.Show("Registrado."); } else { MessageBox.Show("No registrado.\nInténtelo más tarde."); } break; case 2: //iniciar sesion if (trozos[1].TrimEnd('\0') == "SI") { conectado = trozos[2].TrimEnd('\0'); EnableLogIn(); } else { MessageBox.Show("Acceso Denegado, no está registrado.\nPruebe con otros credenciales o inténtelo más tarde."); } break; case 3: //Mas partidas ganadas if (trozos[1].TrimEnd('\0') == "SI") { servicio1 = trozos[2]; //MessageBox.Show("El jugador que ha ganado más partidas es: " + words[2]); } else { servicio1 = "Algo ha ido mal."; //MessageBox.Show("No hay resultado.\nInténtelo más tarde."); } break; case 4: //Mas puntos if (trozos[1].TrimEnd('\0') == "SI") { servicio2 = trozos[2]; //MessageBox.Show("El jugador que tiene más puntuación es: " + words_2[2]); } else { servicio2 = "Algo ha ido mal."; //MessageBox.Show("No hay resultado.\nInténtelo más tarde."); } break; case 5: //servicio1 MessageBox.Show("Los jugadores que han jugado con " + textBox1.Text + " son:" + mensaje + "."); break; case 6: //Lista de conectados DelegadoLimpiarLista delegadoLimpiarLista = new DelegadoLimpiarLista(LimpiarLista); PlayerList.Invoke(delegadoLimpiarLista); int i = 0; int result = Int32.Parse(trozos[1]); while (i < result) { DelegadoListaConectados delegadoListaConectados = new DelegadoListaConectados(PonListaConectados); PlayerList.Invoke(delegadoListaConectados, new object[] { trozos[i + 2] }); //PlayerList.Items.Add(trozos[i + 2]); i++; } break; case 7: //Peticion invitacion if (trozos[1].TrimEnd('\0') == "SI") { string anfitrion = trozos[3].TrimEnd('\0'); DialogResult resp = MessageBox.Show("¿Aceptas jugar?", anfitrion + " te esta invitando a jugar", MessageBoxButtons.OKCancel); if (resp == DialogResult.OK) { //Acepta DelegadoListaInvitados delegadoListaInvitados = new DelegadoListaInvitados(PonListaInvitados); ListaInvitar.Invoke(delegadoListaInvitados, new object[] { trozos[2] }); string acepta = "7/SI/" + trozos[2] + "/" + trozos[3]; byte[] msg = System.Text.Encoding.ASCII.GetBytes(acepta); server.Send(msg); } else { //No acepta string acepta = "7/NO" + trozos[2] + "/" + trozos[3]; byte[] msg = System.Text.Encoding.ASCII.GetBytes(acepta); server.Send(msg); } } break; case 8: //Respuesta invitacion string invitado = trozos[2].TrimEnd('\0'); if (trozos[1].TrimEnd('\0') == "SI") { string texto = " ha aceptado jugar."; DelegadoParaMensajesInvitados delegadoMensajesInvitados = new DelegadoParaMensajesInvitados(PonMensajeInvitado); mensajes.Invoke(delegadoMensajesInvitados, new object[] { invitado, texto }); } else { string texto = " no ha aceptado jugar."; DelegadoParaMensajesInvitados delegadoMensajesInvitados = new DelegadoParaMensajesInvitados(PonMensajeInvitado); mensajes.Invoke(delegadoMensajesInvitados, new object[] { invitado, texto }); } break; case 9: //Insertar mensaje en chat string usuario = trozos[1].TrimEnd('\0'); mensaje = trozos[2].TrimEnd('\0'); string text = usuario + ": " + mensaje; DelegadoChat delegadoChat = new DelegadoChat(PonerText); mensajes.Invoke(delegadoChat, new object[] { text }); break; } } }