我正在从头开始构建一个FTP客户端,我注意到response codes不是立即的(这并不奇怪)。将相应的代码输入命令会有什么好方法?
以下是Filezilla服务器输出的示例。响应代码是每行末尾附近的三位数。
(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 (Tim.Kosse@gmx.de)
(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
答案 0 :(得分:1)
在这种特殊情况下,我可能不会异步地实现这一点。除非发送命令和接收响应代码之间的延迟很大(它可能不适用于FTP),并且你可以安全地执行另一个不知道最后一个结果的命令(你可能不能),它不是真的值得尝试异步实现它。
我在发送命令字符串和接收完整响应之间阻止执行,即在伪代码中你可能有一个执行方法,如:
如果你真的决心走下异步路线,你应该看一下Callback pattern。
希望这有帮助。