Os escribo para ver si me podeís echar una cable para poder solucionar un pequeño error que tengo en mi aplicación cliente/servidor.
Primero os pongo el trozo de codigo de cada parte,
cliente:
Código:
Servidor:try { socket = new Socket(IP,7255); InputStream bufIn = socket.getInputStream(); OutputStream bufOut = socket.getOutputStream(); dataIn = new bufInputStream(bufIn); dataOut = new bufOutputStream(bufOut); byte[] buf = new byte[1024]; int i = 0; // Envio su nombre String nameFich = FICH; dataOut.writeUTF(nameFich); System.out.println("Fichero enviado: "+nameFich); // Envio el fichero FileInputStream fich = new FileInputStream(nameFich); while ((i = fich.read(buf)) != -1){ dataOut.write(buf,0,i); } System.out.println("Fichero enviado"); fich.close(); // Respuesta try{ String cad = dataIn.readUTF(); System.out.println("recibido: "+cad); } catch(IOException ioe) { System.exit(1); } dataIn.close(); dataOut.close(); socket.close(); } catch (UnknownHostException uhe){ System.out.println("Fallo servidor"); System.exit(1); } catch (IOException ioe){ System.out.println("Fallo comunicacion."); System.exit(1); }
Código:
Pues resulta que cuando lo ejecuta tal cual, el servidor recibe bien el fichero, y se quedan tanto el cliente como el servidor como esperando sin llegar a mostrar los println de fichero enviado y recibido, es como si se quedasen esperando información los dos a la vez del estilo como si se hiciera un socket.read() en los dos.try { byte[] buf = new byte[1024]; int i = 0; // Recibe el nombre String nameFich = dataIn.readUTF(); // Recibe el fichero FileOutputStream fich = new FileOutputStream(nameFich); while ((i = dataIn.read(buf)) != -1){ fich.write(buf,0,i); } fich.close(); // Respuesta String cad = "Fichero recibido OK"; dataOut.writeUTF(cad); System.out.println("respondido: "+cad); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }
Ahora si pruebo quitando la parte de enviar el fichero, solo enviando/recibiendo strings funciona perfectamente, y ya no se que hacer o probar por eso recurro a vosotros a ver si me encontrais el error.
Muchas gracias.
PD: No seaís muy duros que soy principiante jeje