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
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