我正在尝试使用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)