私はSSLを介してツイッチチャットサーバーに接続しようとしています。基本的にQTのセキュアSSL接続の例のコードをコピーして貼り付けました。私がconnectToHostEncrypted
できるとき、それはすべてクラッシュした。すべてのヘルプは大Qt QSSlSocket - SEGFAULT on '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:
'MainWindow'コンストラクタで' socket'が 'nullptr'に初期化されていますか? –
@ G.M。私はコードを編集しました。見てみましょう。 –
しかし、あなたは* 'socket'をどこで初期化しますか? 'nullptr'に初期化しておかないと、' MainWindow :: secureConnect'が呼び出されたときに、一般的にはnullでない値がありますが、 'if(!socket){'は失敗します。実際には新しい 'QSslSocket'を作成することはありません。投稿を更新して、 'MainWindow'コンストラクタのコードを表示できますか? –