Enviar y recibir archivos...
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...
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.
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.