QTcpSocket的讀寫函數一般是異步的,即write函數執行後,其實不一定會把數據寫入socket,可能要等到事件循環(main函數的return a.exec())纔會寫入。如果需要立即寫入,要執行QTcpSocket的flush函數。
QTcpSocket的讀函數也類似,我們定義一個槽函數void slot_readyRead響應信號readyRead,槽函數中,能夠讀取的數據,也只有這段時間內socket收到的數據。如果此時socket再收到數據,slot_readyRead執行期間不會重入,但是能夠讀到的數據也只有第一次readyRead時的數據。
猜測QTcpSocket有一個讀寫緩衝區,在事件循環的時候,這些內容才能實際的讀寫。