我使用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返回。
答案 0 :(得分:0)
你是否尝试在分叉后在子进程中执行ssh_bind_free(sshbind)?有可能在多个进程中同时拥有侦听器文件描述符会导致问题。
阿里斯