C++ 当主线程在无限循环中运行时,服务器未收到使用QTcpSocket::write写入的字节?

C++ 当主线程在无限循环中运行时,服务器未收到使用QTcpSocket::write写入的字节?,c++,c,linux,windows,qt,C++,C,Linux,Windows,Qt,我正在开发一个与服务器交互的应用程序 在启动时,它从数据库加载一些数据,当数据库大小很大时,应用程序在很长的循环中运行,比如说我在数据库中有10条lac记录,循环将迭代10次lac 在一段固定的时间间隔(由用户设置)后,比如说1秒钟,我的应用程序将在不同的线程中向服务器发送心跳消息 在正常情况下,它工作正常,但当应用程序在长循环中运行时,服务器未收到心跳消息,尽管qtcsocket::write()返回的写入字节与我正在写入的字节相同(成功),但tcpDump未显示收到的任何字节 我用过 tcp

我正在开发一个与服务器交互的应用程序

在启动时,它从数据库加载一些数据,当数据库大小很大时,应用程序在很长的循环中运行,比如说我在数据库中有10条lac记录,循环将迭代10次lac

在一段固定的时间间隔(由用户设置)后,比如说1秒钟,我的应用程序将在不同的线程中向服务器发送心跳消息

在正常情况下,它工作正常,但当应用程序在长循环中运行时,服务器未收到心跳消息,尽管
qtcsocket::write()
返回的写入字节与我正在写入的字节相同(成功),但
tcpDump
未显示收到的任何字节

我用过

tcpSocket->setSocketOption(QAbstractSocket::LowDelayOption , 1); 
tcpSocket->setSocketOption(QAbstractSocket::KeepAliveOption , 600);

尝试在循环中添加(比如每1000次循环或每100ms一次),以保持应用程序的响应性。当然,如果你遇到这样的问题,这是一个糟糕设计的标志。考虑重新设计应用程序以使用多线程,即主线程和辅助线程用于长操作(您的循环)。更多关于Qt上的线程支持的信息,请参见。

感谢您的建议,现在我正在处理不同线程中的下载/上传数据,它工作得非常好。再次感谢。