[英]Qt - QTcpSocekt cannot detect connection lost
嘗試讀取斷開連接之前傳輸的所有數據:
while( socket->state() == QTcpSocket::ConnectedState )
if ( socket->bytesAvailable() > 0 )
qDebug("Read from client: %s", QString(socket->readAll()).toStdString().c_str());
但是當我從另一端斷開連接時,似乎socket->stated()
仍然保持QTcpSocket::ConnectedState
,我如何檢測套接字是否與另一端斷開連接?
PS:
我必須使用信號/插槽機制嗎? 是否有可能避免信號/插槽機制?
這種while
循環完全阻止了Qt的事件循環執行任何處理,這是不推薦的。 您可以在while
循環中手動調用QCoreApplication::processEvents()
,這可能會使您的套接字狀態進展,但這會產生您可能無法預期的副作用(例如您的應用程序處理可能與之關聯的其他事件)事件處理程序和其他類的信號)。
建議您創建一個槽來處理從套接字讀取的數據(連接到套接字的readyRead()
信號)和另一個槽來處理套接字狀態的變化(連接到套接字的stateChanged()
信號)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.