#3 Re: Enviar archivos con Java - AYUDA
Mil gracias!!!! , me es de muchisima ayuda ExtrañoInocente!!!. Ahora viene el tema dificil, probando me funciona barbaro, envia el archivo y lo rebice, el tema esta en que lo tengo que hacer con Swing. La ventana del cliente me tiene que permitir seleccionar con jFileChooser el archivo a enviar, eso es relativamnete facil, no lo veo muy complicado, ahora, el drama esta del lado del servidor, cuando el archivo llega completamente, me tiene que permiter, en la ventana del servidor, tambien con jFileChooser, la posibilidad de ponerle el lugar en donde quiero guardar el archivo, y tambien el nombre.
¿Alguna idea con respecto a como hacer eso con el servidor? ¿como le digo al servidor que me levante el jFileChooser una ves que el archivo llego completamente?
Les paso el codígo que mas o menos arme para el envio y recepcion de un archivo ( consola )
Cliente
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 = "temp.msi";
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();
}
}
Servidor
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:\\llego.msi"));
byte[] buf = new byte[1024]; // ¿QUE HACE ESTO?
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len); // ¿Y ACA?
}
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();
}
}
El cliente es facil de entender..y me doy maña para como armarlo con interfaz grafica, el servidor tambien lo entiendo, exceptuando las marcas en rojo, en las cuales se crea un array de Bytes con una capacidad de 1024, ¿para que lo usa?
Muchas gracias!!!
perdon por no ponerlo tabulado

, me equivoque ..