ssh多线程服务器在ssh_bind_accept中仍然被阻止

时间:2013-08-29 14:30:53

标签: windows multithreading libssh

我使用libssh 5.5实现了SSH服务器。 在端口22上运行连接到服务器的单个ssh客户端,一切正常。 当我尝试连接第二个客户端时出现问题(我使用PUTTY ssh终端作为客户端)。在ssh_bind_accept中等待客户端连接的服务器线程未激活,新打开的(第二个)终端显然是“死”(第一次打开) 终端工作正常)。

我想知道是否有重要的事情要设置我缺少。

以下是我执行的电话:

1. Create the session:

    sshbind = ssh_bind_new();
    session = ssh_new();

2. Call the listen:

    ssh_bind_listen(sshbind)

3. Call the accept:

     ssh_bind_accept( sshbind, session )

4. Open a putty terminal, which unlocks the *ssh_bind_accept* at step 3

5. Create a new thread and continue terminal dialogue in newly created thread

基本上,我开发的服务器基于此处的示例:How to use libssh as server?

我必须支持多个客户终端,我有一个听众, 当创建连接(从ssh_bind_accept返回)时,我创建一个新线程并继续在那里进行ssh连接。分叉后,我创建了新的绑定和会话,并让自己等待ssh_bind接受。 问题是打开第二个终端,不会导致ssh_bind_accept返回。

1 个答案:

答案 0 :(得分:0)

你是否尝试在分叉后在子进程中执行ssh_bind_free(sshbind)?有可能在多个进程中同时拥有侦听器文件描述符会导致问题。

阿里斯