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

Problema al leer de un socket

Estas en el tema de Problema al leer de un socket en el foro de Java en Foros del Web. El caso es que estoy haciendo una aplicación que se conecta a un Servidor FTP, en este caso a uno que he creado con Filezilla ...
  #1 (permalink)  
Antiguo 26/02/2012, 11:18
 
Fecha de Ingreso: febrero-2012
Mensajes: 1
Antigüedad: 12 años, 2 meses
Puntos: 0
Problema al leer de un socket

El caso es que estoy haciendo una aplicación que se conecta a un Servidor FTP, en este caso a uno que he creado con Filezilla Server, y cuando quiero leer todo el contenido del socket hasta que este este vacío, este se queda como esperando en lugar de darse cuenta de que no hay datos. He estado leyendo y parece ser que el readLine() del BufferedReader es bloqueante y bloquea el socket. Quisiera saber que tengo que hacer. Coloco un ejemplo en java de lo que quiero hacer:

Código:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Cliente {
    public static void main(String[] args) {
        try{    
                Socket sControl = new Socket("192.168.1.14", 21);
                System.out.println("Establecida conexión de control.");
                
                PrintStream salidaControl = new PrintStream(sControl.getOutputStream(),true);
                BufferedReader entradaControl = new BufferedReader(new InputStreamReader(sControl.getInputStream()));
                
                System.out.println(entradaControl.readLine());
                
                salidaControl.println("USER yo");
                System.out.println(entradaControl.readLine());
                
                salidaControl.println("PASS 4488");
                System.out.println(entradaControl.readLine());
                
                salidaControl.println("HELP");
                
                String line;
                while(true){
                    line = entradaControl.readLine(); //Aquí se queda esperando que le llegue algo para leer y no termina hasta que el servidor le expulsa de la sesión
                    if(line != null)
                        System.out.println(line);
                    else
                        break;
                }
                
                System.out.println("FUERA");
                
        }catch (IOException e) {
            System.out.println("Error en el cliente");
        }
    }
}
Espero que me puedan ayudar, un saludo.

Etiquetas: socket, string
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 06:35.