簡體   English   中英

當主線程無限循環運行時,服務器未收到用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個周期或每100ms),以保持應用程序的響應速度。 當然,如果遇到此類問題,則表明設計不良。 考慮重新設計您的應用程序以使用多個線程,即用於長時間操作(您的循環)的主線程和輔助線程。 在Qt上可以找到更多有關線程支持的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM