Ejercicio de Dados con Conexión Cliente-Servidor en Java [SOLUCIONADO]

La mayor parte de las aplicaciones modernas operan sobre un sistema de cliente-servidor, y Java es un lenguaje de programación ampliamente utilizado en el desarrollo de dichas aplicaciones. Exploraremos cómo crear una aplicación cliente-servidor en java a través de un juego de lanzamiento de dados.

En primer lugar, necesitamos entender cómo funciona el modelo cliente-servidor. El cliente es quien realiza una solicitud al servidor, quien a su vez procesa la solicitud y devuelve una respuesta. En nuestro juego de dados, el cliente podría ser el jugador que lanza los dados, y el servidor sería el encargado de procesar el resultado de ese lanzamiento.

En Java, podemos utilizar la clase ServerSocket para crear el servidor, y la clase Socket para crear el cliente. Aquí tienes un código de ejemplo para crear un servidor en Java:

import java.io.*;
    import java.net.*;

    public class Server {
        public static void main(String[] args) {
            try {
                ServerSocket ss = new ServerSocket(6666);
                Socket s = ss.accept();

                DataInputStream dis = new DataInputStream(s.getInputStream());
                String request = (String)dis.readUTF();
                System.out.println("Mensaje del Cliente : " + request);
                ss.close();
            } catch(Exception e) {
                System.out.println(e);
            }
        }
    }
    

Y aquí tienes un código de ejemplo para crear un cliente en Java:

import java.io.*;
    import java.net.*;

    public class Client {
        public static void main(String[] args) {
            try {
                Socket s = new Socket("localhost", 6666);
                DataOutputStream dout = new DataOutputStream(s.getOutputStream());
                dout.writeUTF("Hola servidor");
                dout.flush();
                dout.close();
                s.close();
            } catch(Exception e) {
                System.out.println(e);
            }
        }
    }
    

El juego de dados es un ejemplo sencillo para demostrar esto. El cliente, es decir, el jugador, lanza los dados y envía la información al servidor. El servidor, entonces, procesa el resultado y lo comparte con otros clientes si es necesario.

En este ejemplo, supongamos que el lanzamiento de los dados se realiza mediante un método aleatorio. El cliente envía al servidor el resultado del lanzamiento, y el servidor determina si el jugador ha ganado o perdido.

He aquí un ejemplo de cómo podría verse el código del servidor en nuestro juego:

import java.io.*;
    import java.net.*;

    public class DiceGameServer {
        public static void main(String[] args) {
            try {
                ServerSocket ss = new ServerSocket(6666);
                Socket s = ss.accept();

                DataInputStream dis = new DataInputStream(s.getInputStream());
                int score = Integer.parseInt(dis.readUTF());
                System.out.println("Cliente lanzó los dados y obtuvo: " + score);

                if (score == 6) {
                    System.out.println("El Cliente ganó");
                } else {
                    System.out.println("El Cliente perdió");
                }

                ss.close();
            } catch(Exception e) {
                System.out.println(e);
            }
        }
    }
    

Y un simple código del cliente podría ser el siguiente:

import java.io.*;
    import java.net.*;
    import java.util.Random;

    public class DiceGameClient {
        public static void main(String[] args) {
            try {
                Socket s = new Socket("localhost", 6666);
                
                Random rand = new Random();
                int diceResult = rand.nextInt(6) + 1;

                DataOutputStream dout = new DataOutputStream(s.getOutputStream());
                dout.writeUTF(Integer.toString(diceResult));
                System.out.println("Dados lanzados, resultado: " + diceResult);

                dout.flush();
                dout.close();
                s.close();
            } catch(Exception e) {
                System.out.println(e);
            }
        }
    }
    

Este blog pretende ser un recurso útil para aquellos que están aprendiendo a programar aplicaciones cliente-servidor en Java. Aunque este ejemplo es bastante sencillo, los principios que se destacan aquí son fundamentales para comprender cómo funciona este tipo de comunicación. Asegúrate de entender cada línea de código antes de seguir adelante, ya que el sistema cliente-servidor puede volverse mucho más complejo a medida que se añaden más características y funcionalidades.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad