Paso de ficheros con socket
Hola, intento pasar varios ficheros seguidos desde un servidor socket a un cliente, el problema es el siguiente: si paso un fichero y cierro la conexión, funciona correctamente, en cambio, si dentro de un bucle envío un fichero tras otro, el cliente no sale del bucle de lectura del primer fichero, el código es el siguiente:
Servidor:
OutputStream s1out;
para=false;
InputStream sin;
s1out = so.getOutputStream();
try {
while (!para) { //desde otro sitio se modifica su valor
byte buf[] = new byte[buffer];
sin = new FileInputStream(fichero); //se modifica desde otro sitio
int n = sin.available();
while ( (n = sin.read(buf)) >= 0)
s1out.write(buf, 0, n);
}
so.close();
}
catch ( IOException e ) {
System.out.println( e );
}
Cliente:
Socket s;
InputStream sIn;
OutputStream son
// Abrimos una conexión con breogan en el puerto 4321
try {
s = new Socket( "192.168.1.3",555 );
// Obtenemos un controlador de fichero de entrada del socket y
// leemos esa entrada
//
son = new FileOutputStream( "fichero" );
sIn = s.getInputStream();
while (true) {
while( ( c = sIn.read() ) != -1 )
son.write((c));
///////////////////////////////
////// proceso fichero
////////////////////////////////
} catch( IOException e ) {
System.out.println( e );
}
}
s.close();
Servidor:
OutputStream s1out;
para=false;
InputStream sin;
s1out = so.getOutputStream();
try {
while (!para) { //desde otro sitio se modifica su valor
byte buf[] = new byte[buffer];
sin = new FileInputStream(fichero); //se modifica desde otro sitio
int n = sin.available();
while ( (n = sin.read(buf)) >= 0)
s1out.write(buf, 0, n);
}
so.close();
}
catch ( IOException e ) {
System.out.println( e );
}
Cliente:
Socket s;
InputStream sIn;
OutputStream son
// Abrimos una conexión con breogan en el puerto 4321
try {
s = new Socket( "192.168.1.3",555 );
// Obtenemos un controlador de fichero de entrada del socket y
// leemos esa entrada
//
son = new FileOutputStream( "fichero" );
sIn = s.getInputStream();
while (true) {
while( ( c = sIn.read() ) != -1 )
son.write((c));
///////////////////////////////
////// proceso fichero
////////////////////////////////
} catch( IOException e ) {
System.out.println( e );
}
}
s.close();
