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


0