Java - Cliente/Servidor TCP

 
Vista:

Cliente/Servidor TCP

Publicado por Sandra (3 intervenciones) el 07/04/2023 15:58:49
Hola, tengo el siguiente código, en el que el servidor debe generar un número aleatorio y enviar el mensaje al cliente "Adivina el número del 0 al 500", el cliente también genera números aleatorios que envía al servidor, y según el número, el servidor debe enviar el mensaje al cliente indicando si el número debe ser mayor o menor. El cliente debe seguir generando números hasta que ponga el correcto.

Código Servidor:

package servidor;

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;
import java.util.Random;

/**
*
* @author sandr
*/
public class Servidor {

static final int puerto = 3000;
int numCli;

public Servidor() throws IOException {

ServerSocket skServidor = new ServerSocket(puerto);
Socket cliente = skServidor.accept();
OutputStream aux = cliente.getOutputStream();
DataOutputStream out = new DataOutputStream(aux);
InputStream entrada = cliente.getInputStream();
DataInputStream in = new DataInputStream(entrada);
out.writeUTF("Adivina el número del 0 al 500\n");
Random random = new Random();
int numero = random.nextInt(500 - 0 + 1) + 0;

System.out.println(numero);
while (numCli != numero) {
numCli = Integer.parseInt(in.readUTF());
System.out.println("El cliente ha indicado: " + numCli);

if (numCli < numero) {
out.writeUTF("El número debe ser mayor");
}

if (numCli > numero) {
out.writeUTF("El número debe ser menor");
}

if (numCli == numero) {
out.writeUTF("El número es correcto");
}

}
cliente.close();
}

public static void main(String[] args) throws IOException {

new Servidor();

}

}

Código Cliente:

package servidor;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Random;

/**
*
* @author sandr
*/
public class Cliente {

static final String host = "localhost";
static final int puerto = 3000;
String mensaje;

public Cliente() throws IOException {

Socket cliente = new Socket(host, puerto);
InputStream aux = cliente.getInputStream();
DataInputStream in = new DataInputStream(aux);
OutputStream salida = cliente.getOutputStream();
DataOutputStream out = new DataOutputStream(salida);

do{
System.out.println(in.readUTF());
Random random = new Random();
int numero = random.nextInt(500 - 0 + 1)+ 0;
String numSer = Integer.toString(numero);
out.writeUTF(numSer);
System.out.println(numSer);
System.out.println(in.readUTF());
mensaje = in.readUTF();
}while (!mensaje.contains("El número es correcto"));

cliente.close();

}

public static void main(String[] args) throws IOException {

new Cliente();
}

}

El resultado que obtengo con esto es:

Servidor:

run:
396
El cliente ha indicado: 355

Cliente:

run:
Adivina el número del 0 al 500

355
El número debe ser mayor

Ahí se queda parado.

¿Alguna ayudita?

Gracias.
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