我刚刚写了一个简单的 qtcpserver,几乎就是这个例子:QT QTcpServer::incomingConnection(qintptr handle) not fire?
服务器基本上可以工作,但只有在 main 函数中创建它时。
在职的:
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;
}
当我在 main 函数中创建一个类 A 并在 AI 中创建 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";
}
}
这意味着,我的 main 函数现在包含 A 类和 qtcpserver 函数。当客户端连接时,qtcpserver 函数再次创建一个新线程。我想要做的是让线程在我的 A 类中接收到消息。这就是为什么我想在 A 类中创建 qtcpserver。
有人对此有什么建议吗?如何在 A 中创建服务器?
谢谢!