Envio de archivos por sockets

Iniciado por programacion19, 22 Agosto 2016, 18:02 PM

0 Miembros y 1 Visitante están viendo este tema.

programacion19

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