2
您使用QTcpSocket通過網絡發送數據,將readyRead信號與您的數據處理程序連接起來。但readyRead信號可能未被觸發。無法接收QTcpSocket的readyRead信號?
您可以看到Wireshark到達的數據,但QTcpSocket不會觸發readyRead信號。
您使用QTcpSocket通過網絡發送數據,將readyRead信號與您的數據處理程序連接起來。但readyRead信號可能未被觸發。無法接收QTcpSocket的readyRead信號?
您可以看到Wireshark到達的數據,但QTcpSocket不會觸發readyRead信號。
如果您的線程創建的套接字位於模式對話框中,則會發生這種情況,該對話框會進入自己的事件循環,從而阻止readyRead信號觸發。
我想出了兩個解決方案:
1)使用非模態對話框,提供對話結果與信號。
2)在另一個線程內創建套接字。
正常的模態對話框不會阻止事件處理,Qt負責處理。 – hyde
正常情況下,應該觸發readyRead信號。檢查你的接收端。 –
確保connect()中沒有拼寫錯誤...使用Qt Creator自動完成SIGNAL和SLOT,和/或查看控制檯是否存在關於連接失敗的警告和/或檢查connect()返回值。還要確保你的事件循環運行正常(你沒有調用阻塞方法)。 – hyde
我有相同或相似的問題。 Win7 x64,Qt 5.1。 Wireshark顯示消息到達,但每4-10個消息中只有一個會觸發readyRead()。它讓我難倒了。 – MayaPosch