Приложение перестает получать данные с удаленного компьютера - PullRequest
0 голосов
/ 31 марта 2020

Я занимаюсь разработкой приложения на VB. NET, которое подключается к удаленному Linux серверу для выполнения задачи; мое приложение отправляет входные данные для серверной программы, запускает выполнение на сервере и извлекает выходные данные с сервера, когда выполнение команды завершено. Я использую Renci S SH. NET для обмена файлами (SFTP) и мониторинга удаленного сервера (S SH). Одна из важнейших задач - определить, когда удаленная машина заканчивает выполнение команды, и в зависимости от ввода это может занять от 5 минут до нескольких часов.

Вот моя проблема: для коротких запусков (5 минут или меньше ), приложение работает без проблем, никаких проблем. Но когда выполнение удаленной команды занимает более 10 минут, мое приложение не обнаруживает никакого ответа от сервера и просто зависает, поскольку оно никогда не получает от сервера указание о том, что удаленная задача завершена. Я использую свойство Renci.Ss hNet .Common.Stream.DataAvailable, чтобы определить, когда команда выполнена, проверяя, присутствует ли строка приглашения оболочки при вызове Stream.Read ().

Теперь я знаю, что проблема в приложении, так как, когда я выполняю удаленный код «вручную» (вход на сервер с помощью приложения терминала и выполнение команды), он завершается без проблем. Я подозреваю, что это как-то связано с тем, как объект Renci ShellStream опрашивает данные на удаленной машине. Любые идеи относительно того, что может происходить? Заранее благодарю за ответы.

...