Enviar y recibir archivos...

Laura
14 de Enero del 2005
Como puedo hacer para desarrollar un servidor y un cliente en java que se transfieran archivos? Dado que el servidor debe soportar multiples peticiones de archivos de multiples clientes. Vi sockets y no encuentro la forma de hacerlo, por favor si alguien me puede ayudar...

Lemony Snickets
14 de Enero del 2005
Hola,...

Te escribo un esquema más o menos general que tendrás que completar. Al menos te servirá para orientarte...

SERVIDOR TCP con múltiples clientes

class MiServidorSencillo{
public void main(){
try {
// Creamos el socket del servidor definiendo el puerto en el que se escucharán las peticiones
ServerSocket server = new ServerSocket(puerto);
do {
// El flujo queda detenido en este punto a la espera de peticiones.
Socket client = server.accept();
// Cuando se recibe la petición el flujo continua y se crea una hebra para manejar la petición.
(new HebraServidor(client)).start();
}while (true);

} catch (IOException e){
System.exit(0);
}

class HebraServidor extends Thread {
Socket client;
public HebraServidor(Socket client) {
this.client = client;
}
public void run() {
// Creamos un buffer de entrada
byte[] bufferIn=new byte[1024];
try {
//Se abren canales para la comunicación con el cliente
InputStream in = client.getInputStream();
OutputStream out = client.getOutputStream();
// Leemos de la entrada y almacenamos en bufferIn
in.read(bufferIn);
// Escribimos en la salida lo almacenado en bufferIn
out.write(bufferIn);
//Cerrar canales
in.close();
out.close();
client.close();
}catch(IOException ex) {…}
client.close();
}
}


CLIENTE TCP

class MiCliente{
try {
// Se crea una petición de conexión abriendo un socket a la máquina y puerto donde escucha el servidor
Socket clienteSocket = new Socket(dirIP, puerto);
// Se crean canales de entrada/salida
InputStream in = clienteSocket.getInputStream();
OutputStream out = clienteSocket.getOutputStream();

// Se cierran canales y socket
out.close();
in.close();
clienteSocket.close();
}
cath (UnknownHostException e) {
System.out.println(“No puedo encontrar el host”);
}
catch {(IOException e) {
System.out.println(“Error en la conexión con el host”);
}


}

Hale, suerte...

Un saludo.