Hola chic@s!!
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:
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);
}
Servidor:
Código:
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();
}
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.
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