当主线程在无限循环中运行时,用QTcpSocket::write写入的字节没有被服务器接收
Bytes written with QTcpSocket::write has not been received by server when Main Thread running in infinite loop?
我正在开发一个与服务器交互的应用程序。
当启动时,它正在从数据库中加载一些数据,当数据库大小较大时,应用程序运行在一个很长的循环中,假设我在db中有10个lac记录,循环将迭代10 lac次。
经过一段固定的时间间隔(由用户设置),假设是1秒后,我的应用程序在不同的线程中向服务器发送心跳消息。
在正常情况下,它工作得很好,但是当应用程序在长循环中运行时,服务器没有收到心跳消息,尽管QTcpSocket::write()
返回的写入字节与我正在写的相同(成功),但tcpDump
没有显示收到的任何字节。
我用过
tcpSocket->setSocketOption(QAbstractSocket::LowDelayOption , 1);
tcpSocket->setSocketOption(QAbstractSocket::KeepAliveOption , 600);
尝试在循环中添加processEvents()
(假设每1000个周期或每100毫秒)以保持应用程序的响应。当然,如果您遇到这样的问题,这是糟糕设计的标志。考虑重新设计你的应用程序,使用多个线程,即主线程和工作线程的长操作(你的循环)。关于Qt上线程支持的更多信息可以在这里找到
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 在UNIX系统中使用DIR查找文件的字节大小
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- std::当在256字节边界上写入整数时,流的奇怪行为
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 当比特(而不是字节)的顺序至关重要时的持久性
- 使用 ESP8266/8285 将字符串从 Web 服务器转换为字节数组
- TCP C++客户端从C#服务器接收字节数组
- ofstream将额外的零字节写入Unix服务器上的文件
- 通过QDataStream从客户端发送到服务器的字节不匹配
- PeeknamedPipe在服务器给出句柄时不能给出正确数量的字节,只有在句柄来自客户端时才能起作用
- 将 cv::Mat 存储在字节数组中,以便将数据传输到服务器
- C/C++服务器,通过stdin/stdout与客户端通信(阻塞stdin,直到读取了大量字节)
- 将文件从客户端传输到服务器时缺少字节,字节值也表示一些控制字符
- 从服务器接收到Wt FastCGI不完整的标头(0字节)
- 当主线程在无限循环中运行时,用QTcpSocket::write写入的字节没有被服务器接收
- C++ wxsocket TCP 服务器发送无符号字符数组,但 python 客户端再获得 4 个字节