Qt qtcpserver只有在main函数中创建时才工作
qt qtcpserver is only working when it is created in main function
我刚刚写了一个模拟的qtcpserver,几乎是这个例子:QT QTcpServer::incomingConnection(qintptr handle)不触发?
服务器基本上在工作,但只有在主函数中创建它时。
加工:
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 中创建服务器?
谢谢!
您需要使对象服务器成为类 Class A 的成员,因为现在此对象在创建后立即销毁(因为现在您在本地范围内创建它)
相关文章:
- 如何创建一个类,以便向量工作 std::vector<MyClass<int>> v{ 1,2,3 };
- 使用 stl 库创建图形是如何工作的?
- 为什么在C++中使用关系运算符创建的模板函数不能对字符串正常工作?
- ZeroMQ 在使用 std::thread 创建工作线程时崩溃
- 使用程序生成来创建磁盘,但纹理无法正常工作
- .exe应用程序在windows10中创建新模块时抛出错误,但在windows7中工作正常
- 此类模板的对象创建如何工作?
- 创建链表,但无法按 CPP 的预期工作
- MPI - 当数组初始化值必须为常量时,如何为工作线程创建部分数组
- 当主GUI线程被阻塞时,如何从工作线程创建无模式对话框
- 使用C++的内置队列类在我创建的类中工作
- 在 CDialog 派生类上创建使用 VS2015 CLR 返回 0,在 VC++ 6 中工作正常
- 让QtWebKit在Qt创建器中工作
- 创建不需要任何进一步安装即可在其他计算机上工作的可执行文件?
- 为什么从 lambda 创建的 std::函数在捕获的变量超出范围后工作
- 如何在 C++ 中创建一个类,使其像本机 int 类一样工作
- 在linux下使用boost::thread创建一个boost::asio工作线程
- 如何创建一个在单独的方法中工作的c++随机正态分布
- 我在 C++ 中创建了一个列表容器类,但它没有按预期工作
- GTK 应用程序: 如何使用 Qt/C++ 创建工作指标