QTcpSocket重连方式
Posted
技术标签:
【中文标题】QTcpSocket重连方式【英文标题】:QTcpSocket reconnection way 【发布时间】:2012-07-18 12:13:12 【问题描述】:我使用 QTcpSocket 从服务器获取信息。
就我而言,有必要连接并等待来自服务器的字节,然后获取它们。
我创建 QTcpSocket。将其连接到主机。开始获取数据,没关系。但是,例如,当我拔出以太网电缆时,与套接字对象没有区别。
我尝试连接诸如 QAbstractSocket::error() 和 QAbstractSocket::stateChange() 之类的信号,但在断开连接时没有任何信号给我。
我的任务是等待几秒钟并尝试重新连接,直到我再次获得连接。
有什么建议吗?
【问题讨论】:
TCP 连接不会因为电缆断开而丢失。断开电缆并在一分钟内重新连接(如果我没记错的话)应该只会显示为您的程序的延迟,而不是断开连接。 你的协议支持乒乓球吗? 【参考方案1】:我在编写客户端和服务器项目时遇到了同样的问题。
我使用了 SIGNAL -> disconnected() ,它在客户端断开连接时立即发出。
connect(client, SIGNAL(disconnected()), this, SLOT(DisconnectMessage()));
请尝试使用它。
【讨论】:
在问题cmets中提到,socket没有报告连接,因为它还在重试发送/接收数据包。您需要等待一段时间,直到它放弃并报告断开连接。 我做了一些测试,所以我看到我的 QTcpSocket 在拔掉以太网后 1-2 分钟后断开连接,当我再次插入它时,一段时间后它会自动连接。它完全让我满意。以上是关于QTcpSocket重连方式的主要内容,如果未能解决你的问题,请参考以下文章