В этом конкретном случае я бы не стал реализовывать это асинхронно. Если задержка между отправкой команды и получением кода ответа не велика (что, вероятно, не для FTP), и вы можете безопасно выполнить другую команду, не зная результата последней (что, вероятно, не можете), это действительно стоит попытаться реализовать это асинхронно.
Я бы заблокировал выполнение между отправкой командной строки и получением полного ответа, т. Е. В псевдокоде у вас может быть метод execute, такой как:
- Отправить командную строку по сети
- Дождитесь возвращения символа (или тайм-аута, если вы хотите это сделать), используя метод чтения блокирующей сети или неблокирующий метод + Thread.sleep (..)
- Проверьте, является ли символ токеном «конец ответа» (новая строка?)
- Если нет, вернитесь к 2, если это так, верните полную строку ответа
Если вы действительно полны решимости пойти по асинхронному маршруту, вам следует взглянуть на шаблон обратного вызова .
Надеюсь, это поможет.