private void AtenderServidor() { while (true) { //Recibimos la respuesta del servidor byte[] msg2 = new byte[80]; server.Receive(msg2); string mensajerecibido = Encoding.ASCII.GetString(msg2); string[] trozos = Encoding.ASCII.GetString(msg2).Split('/'); int codigo = Convert.ToInt32(trozos[0]); string mensaje = trozos[1].Split('\0')[0]; string mensaje2; DialogResult result; switch (codigo) { case 1: if (mensaje == "SI") { MessageBox.Show("El usuario: " + Username.Text + ", se ha registrado correctamente."); } else { MessageBox.Show("El usuario: " + Username.Text + ", ya está cogido."); } break; case 2: mensaje2 = trozos[2].Split('\0')[0]; if (mensaje == "SI") { if (mensaje2 == "El usuario: " + Username.Text + ", se ha anadido correctamente a la lista") { MessageBox.Show(mensaje2); registered = true; //DelegadoParaAbrirMain delegado1 = new DelegadoParaAbrirMain (AbrirMain); //this.invoke(delegado1, new object [] {Username.Text}); } else { MessageBox.Show(mensaje2); registered = false; } } else { MessageBox.Show(mensaje2); } break; case 3: MessageBox.Show(mensaje); break; case 4: MessageBox.Show(mensaje); break; case 5: MessageBox.Show(mensaje); break; case 6: //Recibimos notificación int nm = Convert.ToInt32(mensaje); if (nm != 0) { ListaConectados.Rows.Clear(); NumConn.Text = mensaje; int i; for (i = 2; i < nm + 2; i++) { mensaje2 = trozos[i].Split('\0')[0]; DelegadoParaEscribir delegado = new DelegadoParaEscribir(PonTabla); ListaConectados.Invoke(delegado, new object [] { mensaje2 }); } ListaConectados.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); } else { NumConn.Text = "0"; } break; case 7: int id = Convert.ToInt32(mensaje); mensaje2 = trozos[2].Split('\0')[0]; if (id != -1) { result = (MessageBox.Show("Hola, " + Username.Text + ": " + mensaje2 + " te ha invitado a jugar a la partida " + id + ", ¿aceptas?", "aceptar", MessageBoxButtons.YesNo)); switch (result) { case DialogResult.Yes: string envio = "8/" + mensaje + "/SI"; // Enviamos al servidor el username y password tecleadas. byte[] msg = System.Text.Encoding.ASCII.GetBytes(envio); server.Send(msg); break; case DialogResult.No: envio = "8/" + mensaje + "/NO"; // Enviamos al servidor el username y password tecleadas. msg = System.Text.Encoding.ASCII.GetBytes(envio); server.Send(msg); break; } } else { MessageBox.Show(mensaje2); } break; case 8: id = Convert.ToInt32(mensaje); ID = id; mensaje2 = trozos[2].Split('\0')[0]; string mensaje3 = trozos[3].Split('\0')[0]; if (mensaje3 == "SI") { MessageBox.Show(mensaje2 + " ha aceptado a jugar la partida " + id); cont = cont + 1; juegan = juegan + 1; } else { MessageBox.Show(mensaje3); cont = cont + 1; } if (cont == contador) { invited = true; contador = 0; cont = 0; } break; case 9: autor = mensaje; mensaje2 = trozos[2].Split('\0')[0]; RecibirChat(autor, mensaje2); break; case 10: //Recibimos notificación int n = Convert.ToInt32(mensaje); //recibimos el numero de partidas disponibles if (n != 0) { ListaPartidas.Rows.Clear(); partidasBox.Text = mensaje; int i; for (i = 2; i < n + 2; i++) { mensaje2 = trozos[i].Split('\0')[0]; DelegadoParaEscribir delegado = new DelegadoParaEscribir(PonTabla2); ListaPartidas.Invoke(delegado, new object[] { mensaje2 }); } ListaPartidas.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); } else { partidasBox.Text = "0"; } break; } } }
public void AtenderServidor() { while (true) { byte[] msg2 = new byte[80]; server.Receive(msg2); //Limpiar el mensaje de basura string mensaje = Encoding.ASCII.GetString(msg2).Split('\0')[0]; string [] respuesta = mensaje.Split('/'); int codigo = Convert.ToInt32(respuesta[0]); switch (codigo) { case 0: mensaje = respuesta[1]; lblconexion.ForeColor = Color.Black; DelegadoModificarPerfil delegadoModificarPerfil = new DelegadoModificarPerfil(ModificarDatosPerfil); Invoke(delegadoModificarPerfil, new object[] { respuesta }); //lblconexion.Text = mensaje; atender.Abort(); break; case 1: mensaje = respuesta[1]; if (mensaje == "err") // En caso de querer registrarse con un usuario ya existente { MessageBox.Show("Este usuario ya existe!"); A = 0; server.Shutdown(SocketShutdown.Both); server.Close(); atender.Abort(); } else { RegisterCheck = true; MessageBox.Show(mensaje + " se ha registrado correctamente, Ahora inicie sesión!"); } break; case 2: mensaje = respuesta[1]; if (mensaje == "err1") // En caso de querer iniciar sesión con un usuario no existente { A = 0; MessageBox.Show("Este usuario no existe!"); server.Shutdown(SocketShutdown.Both); server.Close(); atender.Abort(); } else if (mensaje == "err2") // Si ya se ha iniciado sesión con esa cuenta { A = 0; MessageBox.Show("Este usuario ya ha iniciado sesion"); server.Shutdown(SocketShutdown.Both); server.Close(); atender.Abort(); } else { MessageBox.Show(mensaje + " ha iniciado sesión correctamente"); //lblconexion.Text = "Conectado"; delegadoModificarPerfil = new DelegadoModificarPerfil(ModificarDatosPerfil); Invoke(delegadoModificarPerfil, new object[] { respuesta }); btnRegistrarse.Invoke(new DelegadoRegistrarVisible(PonInvisible), new object[] { "btnRegistrarse" }); lblconexion.ForeColor = Color.Green; } break; case 3: mensaje = respuesta[1]; if (mensaje == "err3") // Error al eliminar un usuario inexistente { A = 0; MessageBox.Show("Este usuario no existe!"); server.Shutdown(SocketShutdown.Both); server.Close(); atender.Abort(); } else { MessageBox.Show(mensaje + " se ha dado de baja correctamente"); } break; case 4: mensaje = respuesta[1]; DelegadoRegistrarVisible delegadoModificarPeticion2 = new DelegadoRegistrarVisible(Peticion2); peticion2Lbl.Invoke(delegadoModificarPeticion2, new object[] { mensaje }); break; case 5: mensaje = respuesta[1]; DelegadoRegistrarVisible delegadoModificarPeticion = new DelegadoRegistrarVisible(Peticion1); peticion1Lbl.Invoke(delegadoModificarPeticion, new object[] { mensaje }); break; case 6: //ListaConectados.Rows.Clear(); int numConectados = Convert.ToInt32(respuesta[1]); DelegadoDataGridView delegado = new DelegadoDataGridView(LimpiarDatagrid); ListaConectados.Invoke(delegado, new object[] { ListaConectados }); int j = 0, k = 2; DelegadoDataGridView2 delegado2 = new DelegadoDataGridView2(AñadirDatagrid); while (j < numConectados) { //ListaConectados.Rows.Add(respuesta[k]); ListaConectados.Invoke(delegado2, new object[] { ListaConectados, respuesta, k }); j++; k++; } break; case 7: //Llega una invitación, mostramos el mensaje al usuario. int IdPartida = Convert.ToInt32(respuesta[1]); string host = respuesta[2]; Invitacion invitacion = new Invitacion(IdPartida, host); invitacion.ShowDialog(); break; case 8: IdPartida = Convert.ToInt32(respuesta[1]); int numParticipantes = Convert.ToInt32(respuesta[2]); string nombre = respuesta[3]; ThreadStart ts = delegate { crearPartida(IdPartida, numParticipantes, nombre); }; T = new Thread(ts); T.Start(); break; case 9: IdPartida = Convert.ToInt32(respuesta[2]); partidas[IdPartida].tomaRespuesta(respuesta); break; case 10: MessageBox.Show("La partida esta llena"); break; case 11: IdPartida = Convert.ToInt32(respuesta[1]); partidas[IdPartida].configurarPartida(Convert.ToInt32(respuesta[2])); break; case 12: //Recibimos la ID de las cartas repartidas IdPartida = Convert.ToInt32(respuesta[1]); int numjugadores = Convert.ToInt32(respuesta[2]); int numCartas = Convert.ToInt32(respuesta[3]); int[] IdCarta = new int[10]; int n = 0; int m = 4; while (n < numCartas) { IdCarta[n] = Convert.ToInt32(respuesta[m]); n++; m++; } if (numCartas != 0) { ts = delegate { crearMano(IdCarta, numCartas, IdPartida, numjugadores); }; T = new Thread(ts); T.Start(); SoundPlayer simpleSound = new SoundPlayer(@"repartir.wav"); simpleSound.Play(); } else { partidas[IdPartida].AsignarPuntuacionRonda(numjugadores); } break; case 13: IdPartida = Convert.ToInt32(respuesta[1]); partidas[IdPartida].tomaRespuesta(respuesta); break; case 14: IdPartida = Convert.ToInt32(respuesta[1]); partidas[IdPartida].tomaRespuesta(respuesta); break; case 15: IdPartida = Convert.ToInt32(respuesta[1]); partidas[IdPartida].VaciarTabla(); break; case 16: IdPartida = Convert.ToInt32(respuesta[1]); partidas[IdPartida].EscribirPuntuacion(respuesta); break; case 17: IdPartida = Convert.ToInt32(respuesta[1]); partidas[IdPartida].tomaRespuesta(respuesta); break; default: break; } } }