JP01.java - JP10.java Realiza los ejercicios de programación multiproceso.
JH01.java - JH20.java Realiza los ejercicios de programación multihilo.
Crea las siguientes aplicaciones cliente-servidor (ayúdate de los siguientes apuntes):
JC01.java - JS01.java (puerto 10001) Crea un servidor que escuche y atienda a un solo cliente por el puerto 10001. Una vez el cliente se conecte al servidor correctamente, éste le enviará al cliente la cadena ¡Hola, mundo! y tanto el servidor como el cliente finalizarán.
JC02.java - JS02.java (puerto 10002) Crea un servidor que escuche y atienda a un solo cliente. Una vez el cliente se conecte al servidor correctamente, éste le enviará al cliente cincuenta enteros aleatorios del 0 al 10 (ambos incluidos) y tanto el servidor como el cliente finalizarán.
JC03.java - JS03.java (puerto 10003) Crea un servidor de eco que escuche y atienda a un solo cliente. El cliente solicitará al usuario un mensaje (cadena de caracteres) y se lo enviará al servidor, éste lo recibirá y le enviará al cliente el mismo mensaje.
JC04.java - JS04.java (puerto 10004) Repite la actividad anterior pero esta vez el servidor de eco escuchará y atenderá a varios clientes (el servidor lanzará un hilo por cliente).
JC05.java - JS05.java (puerto 10005) Repite la actividad anterior pero esta vez si el usuario introduce Adiós.
, el cliente finalizará.
JC06.java - JS06.java (puerto 10006) Repite la actividad anterior pero esta vez el servidor si no recibe conexiones en 10 segundos expirará (setSoTimeout()).
JC07.java - JS07.java (puerto 10007) Crea un servidor de eco pero, esta vez, usando el protocolo UDP.
JC08.java - JS08.java (puerto 10008) Crea un servidor que escuche y atienda a varios clientes. El cliente solicitará al usuario dos enteros y se lo enviará al servidor, éste lo recibirá y le enviará al cliente la suma de los dos enteros.
JC09.java - JS09.java (puerto 10009) Repite la actividad anterior, pero esta vez el servidor guardará en un fichero de texto las diferentes sumas.
JC10.java - JS10.java (puerto 10010) Crea una calculadora simple. El cliente solicitará al usuario dos números reales (double), una operación (carácter +
, -
, *
o /
) y se los enviará al servidor. El servidor realizará el cálculo y le enviará el resultado al cliente.
Crea las siguientes aplicaciones cliente-servidor (un servidor podrá atender a varios clientes a la vez):
JC11.java - JS11.java (puerto 10011) Crea un juego simple de piedra, papel o tijera. El cliente solicitará al usuario una de las tres opciones (piedra, papel o tijera) y se lo enviará al servidor. El servidor generará aleatoriamente una opción (piedra, papel o tijera) y le indicará al cliente si ha ganado, empatado o perdido.
JC12.java - JS12.java (puerto 10012) Crea un juego simple de piedra, papel, tijera, lagarto o Spock. El cliente solicitará al usuario una de las cinco opciones (piedra, papel, tijera, lagarto o Spock) y se lo enviará al servidor. El servidor generará aleatoriamente una opción (piedra, papel, tijera, lagarto o Spock) y le indicará al cliente si ha ganado, empatado o perdido.
JC13.java - JS13.java (puerto 10013) Crea un juego simple de pares y nones. El cliente solicitará al usuario si elige pares (par) o nones (impar) y un entero de 0 a 10 (ambos incluidos) y se lo enviará al servidor. El servidor generará un entero aleatorio de 0 a 10 (ambos incluidos) y le indicará al cliente si ha ganado o perdido.
JC14.java - JS14.java (puerto 10014) Crea un juego simple de adivinar el número. El servidor generará para cada cliente un entero aleatorio entre 0 y 100 (ambos incluidos). El cliente solicitará al usuario un entero y lo enviará al servidor hasta que adivine el entero generado. El servidor indicará, para cada entero recibido por el cliente, si es mayor, menor o ha acertado. Si acierta, terminará la conexión del cliente y le indicará en cuantos intentos lo ha conseguido.
JC15.java - JS15.java (puerto 10015) Crea un servidor de eco (como la actividad JC04.java - JS04.java) controlando el acceso de los clientes al servidor mediante un sistema de usuario y clave. El servidor almacenará, mediante arrays de Strings, los usuarios grego, alba y pedro y las contraseñas grego1234, alba1234 y pedro1234 respectivamente. Una vez que el usuario ha iniciado sesión correctamente, todo lo que escriba se le replicará con el mismo mensaje; podrá salir con Adiós.
.
JC16.java - JS16.java (puerto 10016) Crea un servidor simple de archivos. El cliente solicitará al usuario dos rutas: la ruta del archivo a descargar y la ruta donde quiere que se guarde el archivo. El cliente enviará al servidor la ruta del archivo a descargar y éste le enviará el archivo.
JC17.java - JS17.java (puerto 10017) Crea un chat simple. El cliente solicitará al usuario un alias. A continuación, el usuario podrá enviar mensajes y recibirá los mensajes de otros usuarios. Cuando el servidor reciba un mensaje, lo reenvíará a todos los clientes activos junto con el alias correspondiente.
JC18.java - JS18.java (puerto 10018) Crea una base de datos sencilla con un fichero de texto datos.txt. Dicho fichero contendrá, en cada línea, una tupla de índice-palabra; ejemplos: 12 gato, 34 león, 2 hormiga, etc. El cliente solicitará al usuario un comando, leer
o escribir
, y un entero y se lo enviará al servidor. El servidor, si la operación es de lectura, buscará y le enviará la palabra según el índide dado. Si es de escritura, creará, o machacará, una nueva tupla índice-palabra.
JC19.java - JS19.java (puerto 10019) Calcula la distancia euclídea de dos puntos 2D. El cliente solicitará al usuario dos puntos 2D (x1, y1, x2 e y2) y le enviará al servidor dos objetos de una clase Punto2D
. A continuación, el servidor recibirá esos dos objetos, calculará la distancia euclídea y le enviará el resultado cliente.
JC20.java - JS20.java (puerto 10020) Calcula el punto medio de dos puntos 3D. El cliente solicitará al usuario dos puntos 3D (x1, y1, z1, x2, y2 y z2) y le enviará al servidor dos objetos de una clase Punto3D
. A continuación, el servidor recibirá esos dos objetos, calculará el punto medio y le enviará el resultado al cliente. Opcionalmente, haz que el servidor envíe el punto medio como un objeto de la clase Punto3D
.
Crea las siguientes aplicaciones cliente-servidor (un servidor podrá atender a varios clientes a la vez):
JC21.java - JS21.java Repite el juego de adivinar el número (JC14.java - JS14.java) pero, esta vez, el servidor almacenará una clasificación con los mejores resultados. Esta clasificación se lo mostrará al cliente si así lo solicita.
JC22.java - JS22.java Repite la actividad anterior pero con un sistema de usuarios y claves, es decir, la clasificación vendrá indicada en ella el alias y el número de intentos.
JC23.java - JS23.java Repite el chat (JC17.java - JS17.java) pero almacenando en un fichero el historial de mensajes.
JC24.java - JS24.java Repite la actividad anterior pero con un sistema de usuarios y claves.
JC25.java - JS25.java Crea el juego pares y nones entre jugadores con un sistema de usuarios y claves. Para ello, el servidor actuará de intermediario entre los jugadores (clientes).
Todo el código estará en una misma carpeta. Se podrá compilar todo de una vez con javac *.java
.
Si algún código no compila correctamente, crear una nueva carpeta denominada otros y mover dicho código allí.
Curso creado por Manuel Ignacio López Quintero bajo esta licencia.