Ich versuche, mich über SSL mit dem Twitch-Chat-Server zu verbinden, und habe im Prinzip Code aus dem Beispiel Secure SSL Connection in QT kopiert und eingefügt. Wenn ich kann connectToHostEncrypted
alles abgestürzt ist. Jede Hilfe wird sehr geschätztQt QSSlSocket - SEGFAULT auf 'connectToHostEncrypted();'
Relative Code:
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!");
}
Erklärung:
Public:
QSslSocket *socket:
Ist 'socket' im' MainWindow' Konstruktor auf 'nullptr' initialisiert? –
@ G.M. Ich habe den Code bearbeitet. Geh und sieh es dir an. –
Aber wo initialisierst du Socket? Wenn Sie es nicht irgendwo mit 'nullptr' initialisieren, dann wird es, wenn 'MainWindow :: secureConnect' aufgerufen wird, im Allgemeinen einen Nicht-Null-Wert haben, in welchem Fall' if (! Socket) {'fehlschlägt und Sie werden Erstellen Sie niemals einen neuen 'QSslSocket'. Können Sie den Post aktualisieren, um den Code für den 'MainWindow'-Konstruktor anzuzeigen. –