java - org - Manejo de respuestas asincrónicas
java ftp connection (1)
En este caso particular, probablemente no busque implementar esto de forma asíncrona. A menos que la demora entre el envío del comando y la recepción del código de respuesta sea grande (lo cual probablemente no sea para FTP), y usted puede ejecutar otro comando sin conocer el resultado del último (que probablemente no pueda), no es realmente vale la pena tratar de implementar esto de forma asíncrona.
Bloquearía la ejecución entre el envío de la cadena de comando y la recepción de la respuesta completa, es decir, en un pseudocódigo podría tener un método de ejecución como:
- Enviar cadena de comando a través de la red
- Espere a que vuelva un personaje (o un tiempo de espera, si lo desea) utilizando un método de lectura de red de bloqueo o utilizando un método sin bloqueo + Thread.sleep (..)
- Verifica si el personaje es un token de ''fin de respuesta'' (¿nueva línea?)
- Si no, regrese a 2, si es así, devuelva la cadena de respuesta completa
Si está realmente decidido a ir por la ruta asíncrona, debería echarle un vistazo al patrón de Devolución de llamada .
Espero que esto ayude.
Estoy construyendo un cliente FTP desde cero y me he dado cuenta de que los códigos de respuesta no son inmediatos (lo que no es sorprendente). ¿Cuál sería un buen enfoque para obtener el código correspondiente a un comando?
A continuación se muestra un ejemplo de la salida del servidor Filezilla. El código de respuesta son los tres dígitos cerca del final de cada línea.
(000057) 23/05/2010 19:43:10 - (not logged in) (127.0.0.1)> Connected, sending welcome message...
(000057) 23/05/2010 19:43:10 - (not logged in) (127.0.0.1)> 220-FileZilla Server version 0.9.12 beta
(000057) 23/05/2010 19:43:10 - (not logged in) (127.0.0.1)> 220-written by Tim Kosse ([email protected])
(000057) 23/05/2010 19:43:10 - (not logged in) (127.0.0.1)> 220 Please visit http://sourceforge.net/projects/filezilla/
(000057) 23/05/2010 19:43:10 - (not logged in) (127.0.0.1)> user anonymous
(000057) 23/05/2010 19:43:10 - (not logged in) (127.0.0.1)> 331 Password required for anonymous