[Ayuda!] Envio de archivos por medio de Sockets.
Publicado por Jesus (1 intervención) el 02/01/2016 21:47:54
Buenas, Tengo un error que me ha estado carcomiendo por días y no sé que está mal, seguramente es una tontería...
Lo que intento hacer es un visor de archivos remoto, corre muy bien y todo, el problema es que al "descargar" un archivo por medio del cliente, sólo te deja hacer una vez esa acción y después deja de recibir datos el servidor y me bota al cliente. Les adjunto los archivos de mi proyecto por si quieren compilarlo ustedes.... Gracias de antemano!
Este es el codigo de la ventana cliente la cual manda un entero y después la ruta a descagar...
Este es el código del servidor, recordemos que el cliente le envía un entero el cual por medio del switch selecciona la opción.
Lo que intento hacer es un visor de archivos remoto, corre muy bien y todo, el problema es que al "descargar" un archivo por medio del cliente, sólo te deja hacer una vez esa acción y después deja de recibir datos el servidor y me bota al cliente. Les adjunto los archivos de mi proyecto por si quieren compilarlo ustedes.... Gracias de antemano!
Este es el codigo de la ventana cliente la cual manda un entero y después la ruta a descagar...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void Descarga() {
try {
oout.writeObject(2);
oout.writeObject(CurrentFile.getAbsolutePath()+ "/" + JLFiles.getSelectedValue());
byte[] receivedData = new byte[1024];
int in;
String file = JLFiles.getSelectedValue();
//Para guardar fichero recibido
bis = new BufferedInputStream(s.getInputStream());
bos = new BufferedOutputStream(new FileOutputStream(file));
while ((in = bis.read(receivedData)) != -1) {
bos.write(receivedData,0,in);
}
bos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
e.getMessage();
}
}
Este es el código del servidor, recordemos que el cliente le envía un entero el cual por medio del switch selecciona la opción.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
private void createConection() {
try {
server = new ServerSocket(NSer);
s = server.accept();
System.out.println("Servidor creado!");
oout = new ObjectOutputStream(s.getOutputStream());
oin = new ObjectInputStream(s.getInputStream());
int op =(int) oin.readObject();
String RFile = "";
while(op!=5) {
switch (op) {
case 1:
RFile = (String) oin.readObject();
Recient = new File(RFile);
oout.writeObject(Recient);
break;
case 2:
//Esta es el case que no se si es la que está mal...
RFile = (String) oin.readObject();
Recient = new File(RFile);
bis = new BufferedInputStream(new FileInputStream(Recient));
bos = new BufferedOutputStream(s.getOutputStream());
//Enviamos el fichero
byteArray = new byte[8192];
while ((in = bis.read(byteArray)) != -1){
bos.write(byteArray,0,in);
}
bos.close();
break;
case 4:
s = server.accept();
oout = new ObjectOutputStream(s.getOutputStream());
oin = new ObjectInputStream(s.getInputStream());
break;
default:
break;
}
op =(int) oin.readObject();
}
} catch (Exception e) {
// TODO Auto-generated catch block
NSer++;
createConection();
e.printStackTrace();
} finally {
closeConection();
}
}
- ArchivosCliente.rar(817,0 KB)
Valora esta pregunta
0