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();