openssh - libssh2_session_handshake 返回 -43
问题描述
这是我的 win10 上的 ssh 服务器,而不是当我从 libssh2 1.90 运行由 Visual Studio 2015 构建的名为 example-ssh2 的演示时。我看到 tcp 套接字已建立。
session = libssh2_session_init()
成功了。但是
libssh2_session_handshake(session, sock)
总是返回-43。
你可以帮帮我吗?
解决方案
当连接到高延迟网络上的服务器时,我得到了这个 -43。
Libssh2.h 有这个定义...
定义 LIBSSH2_ERROR_SOCKET_RECV -43
通过像这样在 libssh2_session_init() 调用和 libssh2_session_handshake(session, sock) 调用之间添加短暂的睡眠,我能够成功地持续连接......
session = libssh2_session_init();
std::this_thread::sleep_for(std::chrono::milliseconds(300));
libssh2_session_handshake(session, sock);
通过单步调试器中的原始代码,我偶然发现了这个解决方案,并且它每次都会成功连接,所以我尝试了 sleep 并且它起作用了。我尝试了一些不同的睡眠时间,30ms 是仍然有效的最低值。
我在试图找到这种行为的解释时找到了你的帖子。我希望这种方法对你有用。
推荐阅读
- kubernetes - 如何在 Kubernetes 中将卷挂载到 pod
- mysql - 多表多查询
- matlab - 如何使用 tcp 连接从 Matlab 获取 NIST 时间?
- java - 如何从特定的 .csv 列中获取最大值
- php - 按给定数字查找数字
- odbc - 优化 odbc 数据读取器的性能
- android - 将音频数据从移动设备流式传输到服务器的标准方式
- php - PHP无脂肪框架在https重定向下不路由
- c++ - Eclipse:错误:初始化模式失败(无法连接到目标)
- android - React Native 0.60.5 react-native-splash-screen 配置android