我使用libssh进行ssh隧道设置。但是,这不会将其绑定到本地端口,因此我需要的是将端口上接收的所有数据转发到ssh通道。但是,当我这样做时:
QTcpSocket* socket = new QTcpSocket();
socket->bind(27017);
QObject::connect(socket, &QTcpSocket::readyRead, this, &Forwarder::newData);
永远不会调用newData
槽,即永远不会调用QTcpSocket上的readyRead
。每当我尝试通过外部脚本连接到端口时,我都会得到一个Operation timed out
。我确信至少端口是打开的,因为当Qt应用程序没有运行时,我得到的错误是Connection refused
。
我考虑过使用QTcpServer
,但是,我怎么处理这种情况呢?我可能会收到newConnection
个信号,但是我要写什么数据到ssh频道?我如何处理QTcpServer的多个传入连接?连接请求也不是数据包吗?我可以不将所有内容转发到频道(我所指的ssh频道类似于我可以简单写入的fd)。