Programación General > Java
Transferencia De Archivos Por Sockets
(1/1)
acek:
:rolleyes: hola!!! una inquietud no se quien me pueda ayudar con esto es que teno un pequeno dilema estoy tratando de enviar un archivo de cualquier tipo y un tama;o limitado por un socket en java pero no se como hacer..... me podrian ayudar tan siquiera con un codigo guia o la clase que me pueda ayudar a a ralizar eso
agradesco a quien me colabore si!!!! por fa es de vida o muerte :scream:
GRACIAS :comp:
silverfox:
Hola...
No sé qué es lo que no entiendes. Parece que lo tienes todo claro, ¿no?
En la clase Socket tienes un getOutputStream y un getInputStream que te devuelven los flujos de entrada / salida que necesitas para el enviar el fichero.
Usa un FileInputStream para leer el archivo y ya está.
Recuerda que, mientras el cliente tiene que usar la clase Socket para las comunicaciones, el servidor tendrá que utilizar una clase ServerSocket, para mantenerse a la escucha en el puerto por donde realices la comunicación.
Espero haberte aclarado algo.
Un saludo.
Silverfox.
acek:
:lol: pos si tengo idea de que se hace algo asi pero no se como.... es que el manejo de archivos en java no es mi fuerte... agradeceria un codigo de ejemlo o si alguien sabe de una guia :rolleyes: :P
Misuvija:
Hola! Todo bien, revisate este manual de sockets, está super completo. Estoy segura que te ayudará cantidad, trae muchos ejemplos!!!
http://www.cica.es/formacion/JavaTut/Cap9/comms.html
Bye!!!!!!!! :P
antony_soluciones:
Primero lo primero :D ... El servidor recibe un archivo del cliente y lo escribe en su disco duro(espero que recuerdes que el servidor se debe lanzar primero)
--- Código: Text ---/* * Servidor.java * * Author: Antony Delgado * Created: 31 de Agosto de 2006 */ import java.net.ServerSocket;import java.net.Socket;public class Servidor implements Runnable { ServerSocket server; public Servidor() { try { //CREAMOS EL SOCKET DEL SERVIDOR server=new ServerSocket(2002); System.out.println("Servidor corriendo..."); } catch(Exception e) { System.out.println("Error al correr el servidor\n"+e); System.exit(1); } } public void run() { Socket client=null; while (true) { if (server==null) return; try { //ESPERA A QUE LLEGUE UN CLIENTE client=server.accept(); System.out.println("Llegó un cliente!"); } catch(java.io.IOException e) { System.err.println("No se pudo establecer conexión " + e.getMessage()); } try { //ABRIMOS UN BUFER PARA DESCARGAR LO QUE EL CLIENTE NOS ESTÁ ENVIANDO java.io.InputStream in = client.getInputStream(); //CREAMOS LA INSTANCIA PARA ESCRIBIR EL ARCHIVO EN DISCO java.io.FileOutputStream out = new java.io.FileOutputStream(new java.io.File("C:\\php.pdf")); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } in.close(); out.close(); } catch(java.io.IOException e) { System.out.println("Error: " + e); } } } public static void main(String a[]) { Servidor servidor = new Servidor(); // Ponemos a correr nuestro hilo servidor new Thread(servidor).start(); }}
Segundo lo segundo :P ... el cliente le envia un archivo al servidor pero primero lo lee de su discoduro y le envía los bytes al servidor...
--- Código: Text --- /* * Cliente.java * * Author: Antony Delgado * Created: 31 de Agosto de 2006 */ import java.net.Socket;import java.io.InputStreamReader; public class Cliente { private String ip = "127.0.0.1";//O localhost o la que quieras 192.168.0.1 etc... private int puerto = 2002; private String nomArchivo = "D:\\Antony\\REDES\\php.pdf"; public Cliente(){ Socket socket = null; java.io.FileInputStream in = null; java.io.FileOutputStream pt = null; try { socket = new Socket(ip,puerto); pt = (java.io.FileOutputStream)socket.getOutputStream();// in = new java.io.FileInputStream(new java.io.File(nomArchivo)); } catch(Exception e) { System.out.println("No se pudo crear la conexión\n"+e); } try { socket.sendUrgentData(100); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0 ){ pt.write(buf, 0, len); } pt.close(); in.close(); socket.close(); } catch(Exception e) { System.out.println("Error al enviar mensaje\n"+e); } } public static void main(String a[]) { new Cliente(); }}
Espero te sirva
Navegación
Ir a la versión completa