Estoy escribiendo una aplicación de cliente que recibirá un flujo continuo de datos a través de tcp/ip. El problema que estoy teniendo es que el objeto del lector almacenado no está recibiendo ningún dato y está colgando en el método readline.lector de búfer que no recibe datos del socket
La manera en que funciona el servidor es que se conecta a ella y luego envía información de autenticación para recibir datos. La esencia de mi código está por debajo
socket = new Socket(strHost, port);
authenticate();
inStream = new BufferedReader(new InputStreamReader(socket.getInputStream()));
process(inStream);
authenticate()
{
PrintWriter pwriter = new PrintWriter(socket.getOutputStream(), true);
pwriter.println(authString);
}
process(BufferedReader bufferedReader)
{
while((line = bufferedReader.readLine()) != null)
dostuff
}
He creado una aplicación de servidor que envía los datos de la muestra del camino (creo) el servidor está enviando datos y se conecta y recibe y procesa la multa datos. Me puedo conectar al servidor bien en mi aplicación. También puedo hacer una telnet en el servidor y escribir la cadena de autenticación y recibir una gran cantidad de datos usando telnet. Sin embargo, mi aplicación simplemente se cuelga en readLine con el servidor y estoy fuera de la idea de por qué.
Los datos que entran (a través de al menos telnet) se parece a un flujo continuo de los siguientes:
data;data;data;data;data
data;data;data;data;data
¿Por qué mi aplicación colgando en readline, no estoy dando salida a la línea de autenticación correctamente? No recibo ningún error ...
EDITAR Mi código de servidor de ejemplo (que está funcionando correctamente) ... otra vez esto sólo está imitando la forma Creo el servidor real se está ejecutando, pero Puedo conectarme a ambos en mi aplicación simplemente no recibir datos del servidor real.
public static void main(String[] args) throws IOException
{
ServerSocket serverSocket = null;
try
{
serverSocket = new ServerSocket(1987);
}
catch (IOException e)
{
System.out.println("Couldn't listen on port: 1987");
System.exit(-1);
}
Socket clientSocket = null;
try
{
clientSocket = serverSocket.accept();
}
catch (IOException e) {
System.out.println("Accept failed: 1987");
System.exit(-1);
}
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String something;
while ((something = in.readLine()) != null)
{
while(true)
{
out.println(message);
}
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}
nos el código del servidor relacionado con el problema puede mostrar? – Coeffect
'Me puedo conectar bien al servidor en mi aplicación. ¿Te refieres a tu servidor de muestra ficticio? – leonbloy
Quizás debería tener otro hilo listo para leer sus datos _antes de que envíe la autenticación? Supongo que el servidor simplemente comienza a inundar los datos tan pronto como recibe la contraseña. – toto2