首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt QSSlSocket - SEGFAULT关于'connectToHostEncrypted();‘

Qt QSSlSocket - SEGFAULT关于'connectToHostEncrypted();‘
EN

Stack Overflow用户
提问于 2016-07-17 05:09:55
回答 1查看 303关注 0票数 0

我试图通过SSL连接到Twitch服务器,我基本上复制并粘贴了QT中的安全SSL连接示例中的一些代码。当我可以connectToHostEncrypted的时候,一切都崩溃了。任何帮助都是非常感谢的。

相关代码:

代码语言:javascript
复制
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!");
}

声明:

代码语言:javascript
复制
Public:
QSslSocket *socket:
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-17 17:26:00

把这作为一个答案,因为我不确定我是否在评论中表达了我的观点。

您有一个带有成员MainWindow的类socket。把事情保持在最低限度,比方说.

代码语言:javascript
复制
class MainWindow {
public:
  MainWindow();
  void secureConnect();
  void sendData(QString text);
  QSslSocket *socket:
};

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

代码语言:javascript
复制
MainWindow::MainWindow ()
  : socket(nullptr)
  {}

如果在调用socket之前不将MainWindow::secureConnect初始化为nullptr,那么它将有一些随机值。那样的话..。

代码语言:javascript
复制
if (!socket) {

将失败意味着包含..。

代码语言:javascript
复制
socket = new QSslSocket(this);

永远不会被处决。

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

代码语言:javascript
复制
if (!socket) {

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38418097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档