Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/01/2016, 15:05
jesusf606
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Envio de archivos por medio de Sockets

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. Gracias de antemano!

Este es el codigo de la ventana cliente la cual manda un entero y después la ruta a descagar...

Código Java:
Ver original
  1. private void Descarga() {
  2.        
  3.         try {
  4.             oout.writeObject(2);
  5.             oout.writeObject(CurrentFile.getAbsolutePath()+ "/" + JLFiles.getSelectedValue());
  6.            
  7.             byte[] receivedData = new byte[1024];
  8.             int in;
  9.             String file = JLFiles.getSelectedValue();
  10.            
  11.             //Para guardar fichero recibido
  12.             bis = new BufferedInputStream(s.getInputStream());
  13.             bos = new BufferedOutputStream(new FileOutputStream(file));
  14.             while ((in = bis.read(receivedData)) != -1) {
  15.                 bos.write(receivedData,0,in);
  16.             }
  17.             bos.close();
  18.         } catch (Exception e) {
  19.             // TODO Auto-generated catch block
  20.             //e.printStackTrace();
  21.             e.getMessage();
  22.         }
  23.     }

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.

Código Java:
Ver original
  1. private void createConection() {
  2.        
  3.         try {
  4.             server = new ServerSocket(NSer);
  5.             s = server.accept();
  6.            
  7.             System.out.println("Servidor creado!");
  8.             oout = new ObjectOutputStream(s.getOutputStream());
  9.             oin = new ObjectInputStream(s.getInputStream());
  10.            
  11.             int op =(int) oin.readObject();
  12.             String RFile = "";
  13.            
  14.             while(op!=5) {
  15.                
  16.                 switch (op) {
  17.                
  18.                 case 1:
  19.                     RFile = (String) oin.readObject();
  20.                     Recient = new File(RFile);
  21.                     oout.writeObject(Recient);
  22.                     break;
  23.                 case 2:
  24.                                         //Esta es el case que no se si es la que está mal...
  25.                     RFile = (String) oin.readObject();
  26.                     Recient = new File(RFile);
  27.                     bis = new BufferedInputStream(new FileInputStream(Recient));
  28.                     bos = new BufferedOutputStream(s.getOutputStream());
  29.                     //Enviamos el fichero
  30.                     byteArray = new byte[8192];
  31.                     while ((in = bis.read(byteArray)) != -1){
  32.                         bos.write(byteArray,0,in);
  33.                     }
  34.                     bos.close();
  35.                    
  36.                     break;
  37.                 case 4:
  38.                     s = server.accept();
  39.                     oout = new ObjectOutputStream(s.getOutputStream());
  40.                     oin = new ObjectInputStream(s.getInputStream());
  41.                     break;
  42.                 default:
  43.                     break;
  44.                 }
  45.                
  46.                 op =(int) oin.readObject();
  47.             }
  48.            
  49.         } catch (Exception e) {
  50.             // TODO Auto-generated catch block
  51.             NSer++;
  52.             createConection();
  53.             e.printStackTrace();
  54.            
  55.         } finally {
  56.            
  57.             closeConection();
  58.         }
  59.     }