miércoles, 22 de octubre de 2014

[Java] Codigo para compartir archivos por medio de sockets.

El día de hoy vamos a publicar un pequeño proyecto que consiste en dos aplicaciones cliente y servidor que permite que el segundo comparta un archivo con el primero.

 

El primero es un servidor que tiene un toogle button para poder iniciar el socket y empiece a recibir una petición de conexión de algún cliente. Cuando un cliente se conecta tiene como finalidad esperar una petición en una cadena (el cual se encuentra en una clase que tiene una sola cadena en el proyecto archivos compartidos), una vez que recibe esta cadena es la ruta del archivo que se quiere obtener del servidor, el servidor busca y detecta si es que el archivo existe y es valido si no mandara un mensaje que el cliente podra recibirlo y mostrara en la parte de la ventana. 
El archivo es serializado y mandado en bloques de 1024 bytes (no maneja corrección de errores), los cuales son recibidos en el cliente para formar el archivo y posteriormente tambien se queda con una copia el servidor para meterla en un mapa, el cual le llamamos cache, que es la colección con las piezas del archivo, cuando un cliente vuelve a hacer la petición la toma de la cache no mas enviando los paquetes. 

La aplicación del cliente tiene una dirección IP y un numero de puerto el cual tratara de conectar con un servidor, luego pedira dos valores, el primero de ellos mediante texto pedira la ruta del archivo que se encuentra en el servidor y posteriormente la ruta donde quieres que sea pegado. Una vez que le damos clic en enviar, el servidor buscara el archivo lo mandara por el socket y el cliente lo escribira en la ubicación que le ponemos. 

Como son varios archivos y un proyecto un poco mas elaborado les dejo el repositorio para que chequen la documentación de las clases y el codigo 

https://github.com/cobymotion/TrasferirArchivosJava.git

2 comentarios:

  1. Gracias por compartir.
    Lo voy a probar como ejercicio. Espero que sea tuyo así cualquier duda puedas responderme.

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar