我目前正在开发一个连接到计算机上运行的Qt服务器的Android应用程序,并通过TCP与其进行连接。
在服务器端,我使用一个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*), thinking that perhaps the QTcpSocket is internally destroyed by the QTcpServer.
但当Android设备离线或关闭时,没有信号被接收到。
当QTcpSocket将被QTcpServer释放?只有在套接字明确断开连接时吗?那么在我的情况下,它永远不会被销毁吗?我应该在Android端管理所有情况中的断开连接吗?
谢谢大家。
在服务器端,我使用一个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*), thinking that perhaps the QTcpSocket is internally destroyed by the QTcpServer.
但当Android设备离线或关闭时,没有信号被接收到。
当QTcpSocket将被QTcpServer释放?只有在套接字明确断开连接时吗?那么在我的情况下,它永远不会被销毁吗?我应该在Android端管理所有情况中的断开连接吗?
谢谢大家。