c - ssh_channel_open_forward 非阻塞

标签 c ssh libssh

我正在尝试使用 libssh 实现 ssh 客户端。

根据 libssh 文档:http://api.libssh.org/stable/group__libssh__channel.html#gae86b0704a1f2bdebb268b55567f7f47b ssh_channel_open_forward 支持无 block 模式。

这是我的序列:

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)。断言从未发生,这意味着 channel 已经切换到无 block 模式。但 ssh_channel_open_foward 永远不会返回 SSH_AGAIN。它被完全阻止了。

任何帮助将非常感激。

最佳答案

都是我的错。我查了一下libssh的高手。并在 Linux 和 win32 上重建它。此问题已修复。

关于c - ssh_channel_open_forward 非阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24029278/

相关文章:

c - SSH连接失败:无法处理系统配置文件

c++ - libssh 不返回命令结果

将 float 转换为字节数组的 C 函数

c - 帮助基本线程概念/竞争条件

无法找出段错误

objective-c - 查找适当的 key 以用于验证与 Objective-C 的 SSH 连接

c - 安全使用 MultiByteToWideChar

linux - 如何在 "indirect"ssh 连接中传输文件?

php - Composer Github 私有(private)存储库不适用于给定 key

java - JSch:主机 key 在 known_hosts 中且添加 JCE 后出现 UnknownHostKey 异常