QTcpSocket的readyRead信號觸發條件解釋


轉自:https://blog.csdn.net/dengdew/article/details/79065608

   本篇文章是我看了其他博主對QTcpSocket中的readyRead信號機制的解讀,感覺對自己理解這一塊很有幫助,故將摘要內容寫在下面,供自己學習和大家查閱。如有侵權,請聯系我刪除。

   1、readyRead信號觸發是在QTcpSocket緩存接收到新的數據時,並不等同於發送端write函數調用一次。實際情況是發送端write的數據先到接收端系統的Tcp/ip協議棧中(也就是系統的IO緩沖區),然后再從此緩沖區到QTcpSocket程序的緩存中。readyRead信號觸發需要數據傳到QTcpSocket緩存中。

   2、當數據從系統緩沖區到QTcpSocket緩存時,readyRead信號觸發一次。如果此時readyRead槽函數還沒有及時執行,又有新的數據到來了,而且來了很多次(QTcpSocket緩存還沒滿的情況,滿的情況下系統不再發數據給應用),那么這些所有的都將會只觸發一次readyRead信號。

   3、當數據從系統緩沖區到QTcpSocket緩存時,readyRead信號觸發一次。如果此時readyRead槽函數執行了,后續再來的新數據,將會觸發新的readyRead信號。但這個QTcpSocket連接中,還沒有響應的readyRead信號最多只有兩個。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM