我目前正在開發一個通過TCP連接到服務器的Android應用程序。服務器用Qt編寫,並在計算機上運行。QTcpSocket的使用時間
在服務器端,我用QTcpServer
和信號QTcpServer::newConnection()
得到QTcpSocket
新與QTcpServer::nextPendingConnection()
連接。我實現了一個名爲SocketManager
的類,它管理由此套接字接收的數據。
在Android方面,我使用java Socket來連接服務器。
所有的工作都很棒。當Android端斷開與服務器的連接時,我的SocketManager
對象會被通知並銷燬。但是,例如,當Android設備進入脫機狀態或關閉狀態時,我想妥善管理這種情況。在這種情況下,我沒有通知Android的斷開連接。我連我的QTcpSocket
這些信號:
QAbstractSocket::disconnected()
,QAbstractSocket::stateChanged(QAbstractSocket::SocketState)
QAbstractSocket::error(QAbstractSocket::SocketError)
QObject::destroyed(QObject*)
,心想,也許是與QTcpSocket內部由QTcpServer既可摧毀。
但是,當Android設備脫機或關閉時沒有收到信號。
當QTcpSocket將由QTcpServer
發佈?只有當套接字明確斷開連接時?所以在我的情況下,它會永遠不會被破壞?我應該在Android方面管理所有情況下的斷開連接嗎?
謝謝大家。
這就是我所害怕的。 這是一種您建議我實施的投票系統嗎?我的意思是:一個定時器,用於測試套接字或管道的狀態?我希望能有一個基於事件或信號的解決方案,但你確認我的想法。 謝謝。 –