public static ListadoCola getInstancia() { if (instancia == null) { instancia = new ListadoCola(); } return(instancia); }
private void doChat() { try { string dataFromClient = null; Byte[] sendBytes = null; string serverResponse = null; while (true) { // Recibi mensaje byte[] bytesFrom = new byte[4]; NetworkStream networkStream = clientSocket.GetStream(); networkStream.Read(bytesFrom, 0, bytesFrom.Length); int buffersize = BitConverter.ToInt32(bytesFrom, 0); bytesFrom = new byte[buffersize]; networkStream.Read(bytesFrom, 0, bytesFrom.Length); dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom); //Verifico si es un usuario if (dataFromClient.Contains("usuario")) { Jugador jugador = JsonConvert.DeserializeObject <Jugador>(dataFromClient); jugador.setConexion(clientSocket); Partida.setTcpClients(clientSocket); //Depende del mensaje que mande un usuario, el servidor realiza una acción distinta switch (jugador.mensaje) { case 0: System.Console.WriteLine("Jugador " + jugador.usuario + " ha ingresado al servidor"); System.Console.WriteLine("Id: " + jugador.id + "/ Nombre: " + jugador.usuario + "/ Puntaje: " + jugador.puntaje + "/ Victorias: " + jugador.calcularPorcentaje() + "%"); enviarMensaje("ok"); break; case 1: string rival = ListadoCola.getInstancia().entrarCola(jugador); System.Console.WriteLine("Jugador " + jugador.usuario + " ha ingresado a la cola"); if (rival != "") { //Se envia al rival y se vuelve a setear la conexion para que no quede en null enviarMensaje(rival); jugador.setConexion(clientSocket); } break; case 2: ListadoCola.getInstancia().salirCola(jugador); System.Console.WriteLine("Jugador " + jugador.usuario + " ha salido de la cola"); enviarMensaje("ok"); Partida.reiniciarChecks(); break; } } else { Partida.interpretarMensaje(dataFromClient, clientSocket); //Mensajes provenientes de la partida } void enviarMensaje(string mensaje) { serverResponse = mensaje; sendBytes = System.Text.Encoding.ASCII.GetBytes(serverResponse); byte[] intBytes = BitConverter.GetBytes(sendBytes.Length); networkStream.Write(intBytes, 0, intBytes.Length); networkStream.Write(sendBytes, 0, sendBytes.Length); networkStream.Flush(); } } } catch (System.IO.IOException) { Console.WriteLine("Un usuario se ha desconectado"); } }