gpt4 book ai didi

c++ - qt qtcpserver 仅在主函数中创建时才起作用

转载 作者:行者123 更新时间:2023-11-30 03:45:13 32 4
gpt4 key购买 nike

我刚刚写了一个简单的qtcpserver,几乎就是这个例子:QT QTcpServer::incomingConnection(qintptr handle) not firing?

服务器基本上是工作的,但只有当它在主函数中创建时。

工作:

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

TestServer server;

return a.exec();
}

不工作(这段代码无论如何都不会像这样工作,它只是为了告诉你我的意思):

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

classA cA;

return a.exec();
}

classA::classA(QObject *parent) :
QThread(parent)
{
TestServer server;
}

当我在主函数中创建类 A 并在 A 中创建 tcpserver 时,尽管服务器本身已启动,但永远不会执行 incomingConnection() 函数。我可以看到这一点,因为我从 A 的构造函数中收到“服务器启动端口...”消息:

TestServer::TestServer(QObject *parent):
QTcpServer(parent)
{
if (this->listen(QHostAddress::Any, 2323)) {
qDebug() << "Server start at port: " << this->serverPort();
} else {
qDebug() << "Start failure";
}
}

这意味着,我的主要功能现在拥有类 A 和 qtcpserver 功能。当客户端连接时,qtcpserver 函数再次创建一个新线程。我想要做的是让线程接收到的消息在我的 A 类中。这就是为什么我想在 A 类中创建 qtcpserver。

有人对此有什么建议吗?如何在 A 中创建服务器?

谢谢!

最佳答案

你需要让对象 server 成为类 classA 的成员,因为现在这个对象在创建后立即销毁(因为现在你在本地范围内创建它)

关于c++ - qt qtcpserver 仅在主函数中创建时才起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34978799/

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