[英]Qt error message “qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed”
[英]Qt QSSlSocket - SEGFAULT on 'connectToHostEncrypted();'
我試圖通過SSL連接到Twitch聊天服務器,並且基本上從QT中的“安全SSL連接”示例中復制並粘貼了一些代碼。 當我可以connectToHostEncrypted
它全部崩潰了。 任何幫助是極大的贊賞
相對代碼:
void MainWindow::secureConnect()
{
if (!socket) {
socket = new QSslSocket(this);
connect(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)),
this, SLOT(socketStateChanged(QAbstractSocket::SocketState)));
connect(socket, SIGNAL(encrypted()),
this, SLOT(socketEncrypted()));
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(socketError(QAbstractSocket::SocketError)));
connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
this, SLOT(sslErrors(QList<QSslError>)));
connect(socket, SIGNAL(readyRead()),
this, SLOT(socketReadyRead()));
}
qDebug() << 2;
socket->connectToHostEncrypted("irc.chat.twitch.tv", 443);
QEventLoop loop;
connect(socket, SIGNAL(connected()), &loop, SLOT(quit()));
loop.exec();
qDebug() << 5;
sendData("PASS oauth:" + TwitchAccessToken);
sendData("NICK ThatRedstoneGT");
sendData("JOIN smartguy316");
sendData("PRIVMSG Hello!");
}
宣言:
Public:
QSslSocket *socket:
將其作為答案,因為我不確定我是否能夠在評論中表達自己的觀點。
您有一個帶有成員socket
MainWindow
類。 讓事情降到最低限度吧……
class MainWindow {
public:
MainWindow();
void secureConnect();
void sendData(QString text);
QSslSocket *socket:
};
現在,我希望構造函數實現看起來像...
MainWindow::MainWindow ()
: socket(nullptr)
{}
如果在調用MainWindow::secureConnect
之前未將socket
初始化為nullptr
,則它將具有一些隨機值。 在這種情況下...
if (!socket) {
將失敗,意味着包含...的塊
socket = new QSslSocket(this);
將永遠不會被執行。
通過測試,您可以在調試器下運行代碼,在行上設置斷點...
if (!socket) {
並檢查socket
的值。 第一次點擊該行的socket
應為null。 是嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.