Java - Ejercicio de dados con conexión Cliente-Servidor

 
Vista:
Imágen de perfil de Julio Garcia

Ejercicio de dados con conexión Cliente-Servidor

Publicado por Julio Garcia (1 intervención) el 18/01/2023 10:21:14
Buenos días, me ha surgido una duda sobre este ejercicio:

"El objetivo del ejercicio es crear una aplicación cliente y otra servidor implementando un sencillo juego de dados. En cada turno el Cliente y Servidor simularán la tirada de dos dados, ganando el que mayor puntuación obtenga. La victoria final será para el mejor de 3 rondas. Las dos aplicaciones se intercambiarán los resultados de la tirada para saber quien ha ganado."

La duda que tengo es que no sé como insertar un bucle para que el Servidor repita el "lanzamiento del dado".
Os dejo el código que tengo por ahora.

Clase Cliente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package tcpdados;
 
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import java.util.Scanner;
 
public class TCPDadosCliente {
 
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        String Host = "localhost";
        int Puerto = 6000;//puerto remoto
        int contador=0;
 
        System.out.print("PROGRAMA CLIENTE INICIADO....\n");
        Socket Cliente = new Socket(Host, Puerto);
 
        // CREO FLUJO DE SALIDA AL SERVIDOR
        DataOutputStream flujoSalida = new DataOutputStream(Cliente.getOutputStream());
 
        // ENVIO UN SALUDO AL SERVIDOR
        while(contador<3){
             flujoSalida.writeInt((int) Math.random()*12+1);
            // CREO FLUJO DE ENTRADA AL SERVIDOR
            DataInputStream flujoEntrada = new DataInputStream(Cliente.getInputStream());
 
            // EL SERVIDOR ME ENVIA UN MENSAJE
            System.out.print("Recibiendo del SERVIDOR: " + flujoEntrada.readInt());
            contador ++;
        }
 
        // CREO FLUJO DE ENTRADA AL SERVIDOR
        DataInputStream flujoEntrada = new DataInputStream(Cliente.getInputStream());
 
        // EL SERVIDOR ME ENVIA UN MENSAJE
        System.out.print("Recibiendo del SERVIDOR: "
                + flujoEntrada.readInt());
 
        // CERRAR STREAMS Y SOCKETS
        flujoEntrada.close();
        flujoSalida.close();
        Cliente.close();
    }// main
}//

Clase Servidor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package tcpdados;
 
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
 
public class TCPDadosServidor {
 
    public static void main(String[] arg) throws IOException {
        int numeroPuerto = 6000;// Puerto
        ServerSocket servidor = new ServerSocket(numeroPuerto);
        Socket clienteConectado = null;
        System.out.print("Esperando al cliente.....\n");
        clienteConectado = servidor.accept();
        int contador=0;
 
        // CREO FLUJO DE ENTRADA DEL CLIENTE
        InputStream entrada = null;
        entrada = clienteConectado.getInputStream();
        DataInputStream flujoEntrada = new DataInputStream(entrada);
 
        // EL CLIENTE ME ENVIA UN MENSAJE
        System.out.print("Recibiendo del CLIENTE: "
                + flujoEntrada.readInt());
 
        // CREO FLUJO DE SALIDA AL CLIENTE
        OutputStream salida = null;
        salida = clienteConectado.getOutputStream();
        DataOutputStream flujoSalida = new DataOutputStream(salida);
 
        // ENVIO UN SALUDO AL CLIENTE
        flujoSalida.writeInt((int) Math.random());
 
        // CERRAR STREAMS Y SOCKETS
        entrada.close();
        flujoEntrada.close();
        salida.close();
        flujoSalida.close();
        clienteConectado.close();
        servidor.close();
    }// main
}

Os agradecería bastante vuestra ayuda. Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder