
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
Clase Servidor
Os agradecería bastante vuestra ayuda. Gracias de antemano
"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


0