Subido por albert esteller

2020 P6 Previo

Anuncio
Práctica Nº 6: Comunicación mediante protocolo UDP
Asignatura PROGRAMACIÓN
Laboratorio de Programación
Grado en Enginyeria Electrònica de Telecomunicacions
Curso 2019-20
Objetivos
•
•
•
Identificar las clases que sirven para trabajar con el protocolo UDP.
Describir cómo se usan estas clases en el servidor y en el cliente.
Desarrollar aplicaciones que usen el protocolo UDP.
Material a entregar
Un archivo zip con la carpeta de los 2 proyectos en eclipse y el archivo respuestas.docx. La carpeta de cada proyecto
debe contener entre otros los archivos UDPCliente.java y UDPServidor.java dentro de la subcarpeta “src” y la
documentación dentro de la subcarpeta “doc”.
"Guía de estilo
El documento Java_GuiaEstilo.pdf describe las herramientas para compilar, ejecutar y generar la documentación.
Además, se indican las convenciones que usaremos a la hora de escribir el código Java. Es un requisito seguir las
indicaciones sobre los nombres de las clases, los nombres de los métodos y los comentarios de documentación.
Descripción de la aplicación a realizar
El Ministerio de Sanidad del Gobierno de España ha iniciado un estudio para conocer la incidencia de la epidemia de
Covid-19 entre la población española. El Ministerio nos han encargado el desarrollo de una aplicación Java que
permita gestionar adecuadamente la recolección de los resultados de los tests realizados y el análisis de estos.
Con carácter previo al desarrollo del proyecto es necesario crear un prototipo básico que permita comunicar entre
los elementos del sistema, para lo cual se ha escogido el protocolo UDP.
En concreto, se desea enviar mediante el protocolo UDP un mensaje de un cliente a un servidor, y que el servidor
muestre por consola el mensaje recibido.
1
Práctica Nº 6: Comunicación mediante protocolo UDP
Asignatura PROGRAMACIÓN
Tareas:
Tarea 1
Implementar una clase UDPCliente que permita enviar un mensaje de un tipo String de un cliente a un
servidor vía protocolo UDP.
La clase UDPCliente contará con los siguientes atributos:
private
private
private
private
DatagramSocket udpSocket;
InetAddress serverAddress;
int port;
Scanner scanner;
Implementa el constructor con y sin parámetros, así como los métodos get y set correspondientes.
Implementa un método enviar que permita al usuario introducir mensajes por pantalla, los obtenga a través
de la instancia de Scanner y los envíe a través del DatagramSocket.
Tarea 2
Implementar una clase UDPServidor que permita recibir mensajes de tipo String vía protocolo UDP
enviados desde las instancias de UDPCliente.
La clase UDPServidor contará con los siguientes atributos:
private DatagramSocket udpSocket;
private int port;
Implementa el constructor con y sin parámetros, así como los métodos get y set correspondientes.
Implementa un método escuchar que reciba los mensajes enviados por las instancias de UDPCliente y las
muestre por pantalla.
La salida por pantalla en la consola del servidor debe ser similar a la siguiente:
-- Ejecutando UDP Server en DESKTOP-76FPS2L/192.168.10.1-Mensaje de 127.0.0.1: Hola, esto es mi primer mensaje por UDP
Donde:
• La dirección del servidor (en el ejemplo: “DESKTOP-76FPS2L/192.168.10.1”) podemos obtenerla
mediante el método InetAddress.getLocalHost().
• La dirección del cliente (en el ejemplo: “127.0.0.1”) podemos obtenerla del propio paquete recibido.
Tarea 3
Incorpora un método main en cada una de las clases UDPCliente y UDPServidor de manera que sea
posible ejecutarlas independientemente y comprueba su funcionamiento.
2
Práctica Nº 6: Comunicación mediante protocolo UDP
Asignatura PROGRAMACIÓN
Nota
En Eclipse es posible pasar argumentos al método main desde la opción “Run Configurations” del menú
“Run”:
En la pestaña Arguments de la aplicación Java seleccionada es posible introducir diferentes parámetros,
separados por espacios, de manera que podemos tener diferentes configuraciones de ejecución de
nuestras aplicaciones.
Estos argumentos se pasarán al método main como elementos de String[] args de tal modo que podemos
acceder a ellos en nuestra aplicación.
3
Práctica Nº 6: Comunicación mediante protocolo UDP
Asignatura PROGRAMACIÓN
En este ejemplo, se pasan como parámetros la dirección 127.0.0.1 (args[0]) y el puerto 7077 (args[1]):
InetAddress serverAddress = InetAddress.getByName(args[0]);
int port = Integer.parseInt(args[1]);
Pregunta 1
Si quisiéramos enviar desde el servidor un mensaje al cliente para confirmar la correcta recepción de su
mensaje inicial y mostrar la confirmación en el cliente, ¿qué modificaciones deberías realizar en el código
de cada una de las clases? ¿Sería posible enviar y recibir simultáneamente en el cliente? Razona tu
respuesta. Nota: No es necesario que implementes esta funcionalidad en tu proyecto.
4
Descargar