【发布时间】:2016-06-28 18:51:15
【问题描述】:
我正在尝试在 swift 中使用NMSSH 框架来实现一些东西。
为了在从服务器收集数据时不让我的 UI 冻结,我将所有内容都放在了一个
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0))
而且我有时(大约 50% 的概率)会随机遇到这些错误之一。我不确定是什么原因导致它们或如何防止它们。看似随机出现,但在链条中,一个出错它会持续出错一段时间,当它最终工作时,它会连续工作几次。
Socket connection to 192.168.178.27 on port 22 failed with reason -2, trying next address...
Error Domain=libssh2 Code=-18 "Authentication failed (keyboard-interactive)" UserInfo={NSLocalizedDescription=Authentication failed (keyboard-interactive)}
Error Domain=libssh2 Code=-9 "Waiting for password response" UserInfo={NSLocalizedDescription=Waiting for password response}
但最频繁
Error Domain=libssh2 Code=-9 "Would block requesting userauth list" UserInfo={NSLocalizedDescription=Would block requesting userauth list}
和
Error Domain=libssh2 Code=-9 "Would block" UserInfo={NSLocalizedDescription=Would block}
编辑:我粘贴了我的整个代码here,但它有点乱。 该函数应该被调用一次,然后检查一堆服务器的可用性。
getServers() 返回一个字典数组,每个看起来像["alias": "iMac", "ip":" mac.local", "port":"22", "username": "root", "password": "123"]
【问题讨论】:
-
看起来像一个同步问题。
dispatch_async通话中发生了什么? -
@CodeDifferent 好的,我添加了一个示例