簡體   English   中英

Qt - QTcpSocekt無法檢測連接丟失

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM