You are on page 1of 2

DESARROLLO DE SISTEMAS DISTRIBUIDOS

Proyecto 4

Elaborado por: Ukranio Coronilla

El presente proyecto consiste en programar un servidor de archivos bsico y un cliente con sockets
UDP para el sistema operativo LINUX. Se debe hacer uno (cliente o servidor) en lenguaje Java y el
otro en lenguaje C++, y se deja al alumno la decisin de cual se hace en cada lenguaje.

Para elaborar el presente proyecto puede darse una idea en el funcionamiento del servicio TFTP:
https://es.wikipedia.org/wiki/TFTP

Solamente se va a programar la lectura de un archivo que se encuentra en el servidor. Esto


significa que un archivo que se encuentra en el servidor, se va a transferir hacia el cliente.

El cliente ser monoproceso, de modo que solo va a poder atender un cliente a la vez.

En la siguiente figura se muestra un esquema del protocolo para lectura con TFTP:

Fuente: http://www.tcpipguide.com/free/t_TFTPOptionsandOptionNegotiation-3.htm
Su proyecto debe poder transferir archivos de cualquier tipo. Las pruebas se realizarn con
transferencia de archivos de video.

Su aplicacin de tener temporizadores en el cliente, de modo que si un paquete se pierde, se


realice una nueva solicitud de manera automtica y hasta siete intentos. En cuyo caso debe
imprimir el mensaje de que el servidor no est disponible en ese momento y que se intente ms
tarde.

El cliente debe recibir como parmetros nicamente la IP del servidor, el puerto del servidor, y el
nombre del archivo. Por ejemplo para obtener el archivo meloda.mp3 que se encuentra en el
servidor se ejecuta en el cliente:

./cliente 192.168.0.120 7285 melodia.mp3

A manera de sugerencia, el siguiente cdigo permite a Java recibir una cadena de caracteres que
se encuentre incluida dentro de un campo de la estructura proveniente de C++:

StringBuilder sb = new StringBuilder ();


byte nameByte;
while((nameByte = buf.get()) != '\0')
sb.append((char)nameByte);

Y para el caso de introducir bytes a un arreglo en Java y enviarlos posteriormente a C++.

ByteBuffer bb = ByteBuffer.allocate(SIZE);
for (int i = 0; i < TAM_CAD; i++)
bb.put((byte) );

IMPORTANTE
Para subirse a MOODLE, los cdigos de los programas elaborados (principal, interfaz, e
implementacin) deben encontrarse en un archivo de extensin txt, y separar cada uno de estos
archivos con una lnea de asteriscos "*".

En MOODLE existe una liga para el cliente y otra liga para el servidor, no los mezcle en el mismo
archivo.

El nombre del archivo debe ser el nombre del alumno separado con guion bajo, materia ( DSD ),
grupo, numero de proyecto y extensin txt. El no cumplir con estos requisitos provocar la
disminucin de la calificacin.
Ejemplo de un nombre de archivo:
Juan_Perez_Molinar_DSD_4CM2_4.txt
Advertencia: Evite copiar programas y que le sean copiados, cualquier acto de plagio se
castigar para plagiario y plagiado con cero.

You might also like