private void AtenderServidor() { try { while (true) { int nform; byte[] msg2 = new byte[80]; server.Receive(msg2); string[] trozos = Encoding.ASCII.GetString(msg2).Split('/'); int codigo = Convert.ToInt32(trozos[0]); string mensaje; switch (codigo) { case 1: //Recibes la respuesta de iniciar sesion try { mensaje = trozos[1].Split('\0')[0]; if (mensaje == "1") { MessageBox.Show("Usuario y contraseña correctos"); this.Invoke(new DelegadoParaPonerTexto(PonFormConectar), new Object[] { usuario_tBx.Text }); } else { MessageBox.Show("Los datos introducidos no son los correctos"); } } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 1"); } break; case 2: //Recibes la respuesta de registrarse try { mensaje = trozos[1].Split('\0')[0]; if (mensaje == "1") { MessageBox.Show("Usuario registrado correctamente"); } else if (mensaje == "0") { MessageBox.Show("Estos datos ya estan registrados"); } } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 2"); } break; case 3: //Recibes la respuesta de darse de baja try { mensaje = trozos[1].Split('\0')[0]; if (mensaje == "1") { MessageBox.Show("Se ha dado de baja el usuario"); this.Invoke(new DelegadoParaDarseBaja(PonFormBaja)); } else { MessageBox.Show("El jugador no esta en la base de datos"); } } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 3"); } break; case 4: //Recibes la respuesta de las consultas try { mensaje = trozos[1].Split('\0')[0]; c.TomaRespuesta(mensaje); } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 4"); } break; case 5: //Resultado consulta partidas try { mensaje = trozos[1].Split('\0')[0]; partJ.TomaRespuesta(mensaje); } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 13"); } break; case 6: //resultado consulta datos de partida con ese jugador try { mensaje = trozos[1].Split('\0')[0]; partJ.PonResultado(mensaje); } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 6"); } break; case 7: //Notificacion de personas conectadas try { mensaje = trozos[1].Split('\0')[0]; Conectadoslbl.Invoke(new DelegadoParaPonerTexto(PonCon), new Object[] { mensaje }); dataGridView1.Invoke(new DelegadoParaPonerTexto(ActGrid), new Object[] { mensaje }); } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 7"); } break; case 8: //Notificacion de que ha sido invitado a jugar try { mensaje = trozos[1].Split('\0')[0]; accept_invitation.Invoke(new DelegadoParaPonerTexto(PonNoitficacion), new Object[] { mensaje }); } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 8"); } break; case 9: //Mensaje de que ha aceptado la partida try { mensaje = trozos[1].Split('\0')[0]; Aceptados.Add(mensaje); Respuestas.Add(mensaje); MessageBox.Show(mensaje + " ha aceptado la partida"); if (Invitaciones == Aceptados.Count) { MessageBox.Show("Todos los jugadores han aceptado la partida"); Empezar_Partida(); } else if ((Invitaciones == Respuestas.Count()) && (Respuestas.Count != Aceptados.Count())) { MessageBox.Show("Algun jugador ha rechazado la partida"); Invitaciones = 0; Respuestas.Clear(); Aceptados.Clear(); } } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 9"); } break; case 10: //Notificacion de que alguien ha rechazado la partida try { mensaje = trozos[1].Split('\0')[0]; MessageBox.Show(mensaje + " ha rechazado la partida"); Respuestas.Add(mensaje); if ((Invitaciones == Respuestas.Count()) && (Respuestas.Count != Aceptados.Count())) { MessageBox.Show("Algun jugador ha rechazado la partida"); Invitaciones = 0; Respuestas.Clear(); Aceptados.Clear(); } } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 10"); } break; case 11: //Notificacion de que la partida se esta iniciando try { //MessageBox.Show("Iniciando partida"); ThreadStart ts = delegate { AbrirFormPartida(); }; Thread T = new Thread(ts); T.Start(); } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 11"); } break; case 12: //Notificacion de que se ha enviado un mensaje al chat try { nform = Convert.ToInt32(trozos[1]); mensaje = trozos[2].Split('\0')[0]; if (chat == null) { chat = mensaje; } else { chat = chat + Environment.NewLine + mensaje; } FormPartida[nform].ponMensaje(chat); } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 12"); } break; case 13: //Respuesta de si se han introducido bien los datos de la partida mensaje = trozos[1].Split('\0')[0]; MessageBox.Show(mensaje); break; case 14: //Respuesta ganador de la partida try { nform = Convert.ToInt32(trozos[1]); mensaje = trozos[2].Split('\0')[0]; FormPartida[nform].ganPartida(mensaje); } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 14"); } break; case 15: //Respuesta de las partidas jugadas en una fecha try { mensaje = trozos[1].Split('\0')[0]; partJ.TomaRespuesta(mensaje); } catch (FormatException) { MessageBox.Show("Error al procesar los datos de la respuesta 13"); } break; } } } catch (FormatException) { MessageBox.Show("Error en la recepcion de los datos"); } } //Metodo para atender los mensajes del servidor
public void PonResultado(string m) //Poner la respuesta mediante delegados { Conectadoslbl.Invoke(new DelegadoParaPonerTexto(TomaMensaje), new Object[] { m }); }