2012-09-08 55 views
1

是否有可能使用QTcpSocket沒有使用readyRead slots?QtcpSocket without signals/slots

我想這個代碼從TCP服務器讀取DATAS:

QByteArray ba; 

forever 
{ 
sck.waitForReadyRead(); 
ba.append(sck.readAll()); 

if (sck.bytesAvailable() == 0) 
    break; 
} 

但有時我沒有收到來自所有服務器的DATAS!?

回答

2

是的,這是可能的。 TCP是面向流的,你不能像這樣退出迭代。您在QAbstractSocket文檔中有一個示例。你可以看到,你必須繼續閱讀,直到連接關閉(waitForReadyRead()方法返回false)或者直到你發送一些終止序列,這取決於你自己。

+1

你真該死......我的錯,我專注於QTcpSocket!再一次,我必須先RTMFM :( – Stef