首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTcpSocket的寿命

QTcpSocket的寿命
EN

Stack Overflow用户
提问于 2011-07-28 10:12:10
回答 1查看 1K关注 0票数 3

我目前正在开发一个Android应用程序,它通过TCP连接到服务器。服务器是用Qt编写的,并在计算机上运行。

在服务器端,我使用QTcpServer和信号QTcpServer::newConnection()来获得与QTcpServer::nextPendingConnection()新连接的QTcpSocket。我实现了一个名为SocketManager的类,它管理这个套接字接收的数据。

在Android端,我使用java套接字连接到服务器。

一切都很好。当Android端与服务器断开连接时,我的SocketManager对象会被很好地通知并破坏自己。但是,当Android设备离线或关机时,我想要正确地管理这种情况。在这种情况下,我没有收到关于Android断开的通知。我连接我的QTcpSocket的这些信号

  • QAbstractSocket::disconnected()
  • QAbstractSocket::stateChanged(QAbstractSocket::SocketState)
  • QAbstractSocket::error(QAbstractSocket::SocketError)
  • QObject::destroyed(QObject*),认为QTcpSocket可能在内部被QTcpServer破坏。

但是,当Android设备离线或关闭时,不会接收到任何信号。

QTcpSocket何时由QTcpServer发布?只有当插座断线的时候?所以就我而言,它永远不会被摧毁吗?在Android端的所有情况下,我都应该处理断开连接的问题吗?

谢谢大家。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-28 10:45:54

TCP不会通知您断开连接,除非远程对等方显式发送断开连接请求(通过使用close()关机()方法),或者尝试写入断开连接的套接字(在这种情况下,您会得到中断管道信号)。

解决这个问题的经典方法是实现心跳消息系统,在经过一定数量的心跳不活动之后,关闭套接字,得出远程对等端突然死亡或出现网络问题的结论。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6857290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档