Qt和SSL:无法在Qt5中加密连接,但在Qt4中没有加密

时间:2016-12-09 13:22:55

标签: c++ qt ssl

我正在尝试使用Qt5和Ssl在客户端和服务器之间建立安全连接。我已经下载了Qt4代码(可在此处获取:https://github.com/dgraves/QSslChat),它运行正常。但我试图将它改编为Qt5,它无法加密连接。出现两个问题:

QSslSocket *socket = dynamic_cast<QSslSocket *>(server.nextPendingConnection());
assert(socket);

这里的断言失败(qDebug() << socket打印QObject(0x0)),即使我用qobject_cast替换dynamic_cast也是如此。但是当我用static_cast或C样式转换替换它时,它可以工作,但返回的项目是QTcp套接字(例如qDebug() << socket打印QTcpSocket(0x26ebe30)

所以我尝试使用setSocketDescriptor代替演员

 QSslSocket *socket = new QSslSocket;
 socket->setSocketDescriptor(server.nextPendingConnection()->socketDescriptor());

但是,客户端无法执行connectToHostEncrypted(无限循环)。我放了一个waitForEncrypted(),但它超时了。

我正在使用Ubuntu 14.04,Qt 5.2.1和OpenSSL 1.1.0c(g ++ 4.8.4)

0 个答案:

没有答案