我正在尝试使用libssh实现ssh客户端。
根据libssh doc:http://api.libssh.org/stable/group__libssh__channel.html#gae86b0704a1f2bdebb268b55567f7f47b ssh_channel_open_forward支持无块模式。
这是我的顺序:
1. ssh_new ()
2. ssh_set_blcoking (session, false)
3. ssh_connect () :None Blocking -> OK
4. ssh_userauth_password (session, NULL, "password") :None Blocking -> OK
5. ssh_channel_new (session)
6. ssh_channel_set_blcoking (channel, 0)
7. ssh_channel_open_foward(...) :Bocking -> NG
我敢肯定,MaxOS(X)ssh_channel_open_foward函数上的相同代码绝非偶然。
在linux(ubuntu)和Win32(win7 / xp)上,ssh_channel_open_foward被阻止。
另外,添加测试代码:assert(ssh_is_blocking(session _-> session())== 0)。断言永远不会发生,这意味着通道已经切换到无块模式。但是ssh_channel_open_foward从不返回SSH_AGAIN。它被完全阻止。
任何帮助将非常感激。
最佳答案
我的错。我检查了libssh的主人。并在Linux和Win32上重建它。此问题已解决。
关于c - ssh_channel_open_forward非阻塞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24029278/