gpt4 book ai didi

c++ - Qt QSSlSocket - 'connectToHostEncrypted();' 上的段错误

转载 作者:行者123 更新时间:2023-11-28 05:35:22 25 4
gpt4 key购买 nike

我正在尝试通过 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:

最佳答案

Putting this as an answer as I'm not sure I've managed to get my point across in the comments.

你有一个类MainWindow,它有一个成员socket。将事情保持在最低限度让我们说它是......

class MainWindow {
public:
MainWindow();
void secureConnect();
void sendData(QString text);
QSslSocket *socket:
};

现在,我希望构造函数实现看起来像...

MainWindow::MainWindow ()
: socket(nullptr)
{}

如果您没有将 socket 初始化为 nullptr 之前 MainWindow::secureConnect 被调用,那么它将有一些随机值。在这种情况下...

if (!socket) {

将失败意味着包含...的 block

socket = new QSslSocket(this);

永远不会被执行。

通过测试,你能不能在调试器下运行你的代码,在行上设置断点...

if (!socket) {

并检查socket的值。第一次命中该行时,socket 应该为空。是吗?

关于c++ - Qt QSSlSocket - 'connectToHostEncrypted();' 上的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38418097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com