gpt4 book ai didi

java - 处理异步响应

转载 作者:行者123 更新时间:2023-12-01 16:04:35 26 4
gpt4 key购买 nike

我正在从头开始构建一个 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

最佳答案

在这种特殊情况下,我可能不会考虑异步实现它。除非发送命令和接收响应代码之间的延迟很大(对于 FTP 来说可能不是这样),并且您可以安全地执行另一个命令而不知道最后一个命令的结果(您可能不能),否则它不是确实值得尝试异步实现这个。

我会在发送命令字符串和接收完整响应之间阻止执行,即在伪代码中,您可能有一个执行方法,例如:

  1. 通过网络发送命令字符串
  2. 使用阻塞网络读取方法或使用非阻塞方法 + Thread.sleep(..) 等待字符返回(或者超时,如果您想这样做)
  3. 检查该字符是否是“响应结束”标记(换行符?)
  4. 如果不是,则返回2,如果是,则返回完整的响应字符串

如果您确实决定走异步路线,您应该看看 Callback pattern .

希望这有帮助。

关于java - 处理异步响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2892743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com