2012-07-18 45 views
1

我使用QTcpSocket从服务器获取信息。QTcpSocket重新连接方式

从我这边来说,有必要连接并等待来自服务器的字节,并获得它们。

我创建了QTcpSocket。将它连接到主机。开始获取数据,没关系。但是,例如,当我拔出以太网电缆时,与插座对象没有区别。

我试图连接QAbstractSocket :: error()和QAbstractSocket :: stateChange()等信号,但在断开连接时没有任何东西给我。

我的任务是等待几秒钟,尝试重新连接,直到我再次获得连接。

有什么建议吗?

+5

TCP连接不会因为电缆断开而丢失。断开电缆并在一分钟内重新连接(如果我正确记得的话)应该只显示为程序的延迟,而不是断开连接。 – 2012-07-18 12:15:30

+0

你的协议是否支持乒乓? – 2012-07-18 13:58:21

回答

0

我在编写客户端和服务器项目时遇到同样的问题。

我使用了SIGNAL - > disconnected(),它在客户端断开连接时立即发出。

connect(client,SIGNAL(disconnected()),this,SLOT(DisconnectMessage()));

请尝试使用它。

+0

正如问题评论中提到的那样,套接字不报告连接,因为它仍在重试发送/接收数据包。您需要等待一段时间,直到它放弃并报告断开连接。 – 2012-07-19 01:30:05

+0

我已经做了一些测试,所以我看到我的QTcpSocket desconects在拔掉以太网1-2分钟后,当我再次插入它,一段时间后,它会得到连接automaticaly。它完全令我满意。 – mmmaaak 2012-07-19 10:37:05