【发布时间】:2011-07-28 18:45:54
【问题描述】:
我目前正在开发一个通过 TCP 连接到服务器的 Android 应用程序。服务器用 Qt 编写并在计算机上运行。
在服务器端,我使用QTcpServer 和信号QTcpServer::newConnection() 来获取与QTcpServer::nextPendingConnection() 新连接的QTcpSocket。我已经实现了一个名为SocketManager 的类,它管理这个套接字接收到的数据。
在 Android 端,我使用 java Socket 连接到服务器。
一切都很好。当 Android 端与服务器断开连接时,我的 SocketManager 对象会得到很好的通知并自行销毁。但是我想正确管理例如Android设备离线或关闭的情况。在这种情况下,我不会收到 Android 断开连接的通知。我连接了我的QTcpSocket 的这些信号:
-
QAbstractSocket::disconnected(), QAbstractSocket::stateChanged(QAbstractSocket::SocketState)QAbstractSocket::error(QAbstractSocket::SocketError)-
QObject::destroyed(QObject*),认为QTcpSocket 可能在内部被QTcpServer 销毁。
但安卓设备离线或关机时收不到信号。
QTcpSocket什么时候会被QTcpServer释放?只有当套接字明确断开连接时?所以就我而言,它永远不会被摧毁吗?我应该在 Android 端管理所有情况下的断开连接吗?
谢谢大家。
【问题讨论】: