sharpssh "сессия не работает" во время одновременных соединений

Я интегрирую SharpSSH в существующий проект.NET 2.0. Так что не можете переключиться на http://sshnet.codeplex.com/ или другую более новую библиотеку...

У меня все работает на одно соединение с устройством и могу без проблем запускать команды и загружать файлы.

Но поскольку этот инструмент должен иметь возможность обновлять несколько устройств одновременно, приложение запускает несколько соединений sharpssh одновременно. Затем все продолжает работать, но иногда файл загружается не полностью и выдается сообщение об ошибке "сеанс не работает".

SshTransferProtocolBase tx = new Scp(_hostname, _username, _password);
tx.Connect();
tx.OnTransferProgress += new FileTransferEvent(tx_OnTransferProgress);

tx.Put(sshSource.FullName, "/tmp/" + Path.GetFileName(sshTarget));
// --> tx.Put throws the error

При замене "нового Scp" на "новый Sftp", как это

SshTransferProtocolBase tx = new Sftp(_hostname, _username, _password);

Сообщение об ошибке: "inputtream закрыт" или "сеанс не работает"

Есть идеи, как этого избежать?

Большое спасибо, Фрэнк

2 ответа

Решение

Решается добавлением цикла повторов с определенным максимальным числом попыток...

Я боролся с той же проблемой. Получение сообщений об ошибкахсеанса во время многопроцессорной обработки - это известная проблема SharpSSH. Эта библиотека больше не обновляется. Поэтому я предлагаю вам использовать другую библиотеку SSH, такую ​​как SSH.NET: https://github.com/sshnet/SSH.NET

Это простой в использовании. Пример:

SshClient sshobject = new SshClient(OSShostIP, OSSusername, OSSpassword);
sshobject.Connect();
sshobject.RunCommand("mkdir /home/nedim");
sshobject.Disconnect();
Другие вопросы по тегам