我正在尝试编写一个客户端程序,该程序可以连接到使用SSH配置的尽可能多的服务器。
按照基本步骤操作,直到此为止。
m_ctx->event = ssh_event_new ();
m_ctx->session = ssh_new ();
m_ctx->channel = ssh_channel_new (m_ctx->session);
m_ctx->disconnect = false;
m_ctx->callbacks.userdata = m_ctx;
m_ctx->callbacks.channel_data_function = ProcessChannelData;
m_ctx->callbacks.channel_close_function = ClientOnChannelClose;
ssh_callbacks_init (&m_ctx->callbacks);
将serverIp和serverPort设置为会话。
ssh_options_set (ctx->session, SSH_OPTIONS_HOST, serverIp);
ssh_options_set (ctx->session, SSH_OPTIONS_PORT, &serverPort);
稍后我在会话上调用SSH连接。
ssh_connect (m_ctx->session);
我将事件附加到会话上,如下所示。
ssh_event_add_session (m_ctx->event, m_ctx->session);
因此,我已经将一个会话(severIp1:port1)与一个事件相关联。现在,我对该事件执行了dopoll,因此我的回调被击中并且我的数据处理发生了。
for (;;)
{
if (m_ctx->disconnect || (ssh_get_status(m_ctx->session) & (SSH_CLOSED | SSH_CLOSED_ERROR)) != 0)
{
break;
}
ssh_event_dopoll (m_ctx->event, s_clientPollWaitTimeout);
}
现在,如果客户端必须连接到多个服务器(与我想的多个SSH会话相同),是否可以将其链接到同一m_ctx-> event? 这样ssh_event_dopoll可以检查所有关联的会话并调用适当的回调?