Foros del Web » Programación para mayores de 30 ;) » Java »

Duda-error en el uso de sockets

Estas en el tema de Duda-error en el uso de sockets en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/03/2010, 13:19
 
Fecha de Ingreso: agosto-2009
Mensajes: 26
Antigüedad: 14 años, 8 meses
Puntos: 0
Busqueda Duda-error en el uso de sockets

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

Etiquetas: sockets
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:24.