Título: Envio de archivos por sockets Publicado por: programacion19 en 22 Agosto 2016, 18:02 pm Hola.
tengo un programa que envia un archivo por sokets, pero quiero que se puedan seleccionar varios archivos para mandar mas de dos archivos, espero alguien me pueda ayudar // Cliente import javax.swing.JFileChooser; import java.net.*; import java.io.*; public class ClienteArchivo { public static void main(String[] args){ try{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.printf("Escriba la dirección del servidor:"); String host = br.readLine(); System.out.printf("\n\nEscriba el puerto:"); int pto = Integer.parseInt(br.readLine()); Socket cl = new Socket(host, pto); JFileChooser jf = new JFileChooser(); int r = jf.showOpenDialog(null); if (r==JFileChooser.APPROVE_OPTION){ File f = jf.getSelectedFile(); String archivo = f.getAbsolutePath(); String nombre = f.getName(); long tam = f.length(); DataOutputStream dos = new DataOutputStream(cl.getOutputStream()); DataInputStream dis = new DataInputStream(new FileInputStream(archivo)); dos.writeUTF(nombre); dos.flush(); dos.writeLong(tam); dos.flush(); byte[] b = new byte[1024]; long enviados = 0; int porcentaje, n; while (enviados < tam){ n = dis.read(b); dos.write(b,0,n); dos.flush(); enviados = enviados+n; porcentaje = (int)(enviados*100/tam); System.out.print("Enviado: "+porcentaje+"%\r"); }//While System.out.print("\n\nArchivo enviado"); dos.close(); dis.close(); cl.close(); }//if }catch(Exception e){ e.printStackTrace(); } } } //Servidor import java.net.*; import java.io.*; public class ServidorArchivo { public static void main(String[] args){ try{ ServerSocket s = new ServerSocket(8000); for(;;){ Socket cl = s.accept(); System.out.println("Conexión establecida desde"+cl.getInetAddress()+":"+cl.getPort()); DataInputStream dis = new DataInputStream(cl.getInputStream()); byte[] b = new byte[1024]; String nombre = dis.readUTF(); System.out.println("Recibimos el archivo:"+nombre); long tam = dis.readLong(); DataOutputStream dos = new DataOutputStream(new FileOutputStream(nombre)); long recibidos=0; int n, porcentaje; while(recibidos < tam){ n = dis.read(b); dos.write(b,0,n); dos.flush(); recibidos = recibidos + n; porcentaje = (int)(recibidos*100/tam); System.out.print("\n\nArchivo recibido."); }//While dos.close(); dis.close(); cl.close(); } }catch(Exception e){ e.printStackTrace(); }//catch } } Gracias |