在工控等领域,后台线程要始终保持网络处于连接状态,这是,就需要处理好当网络异常断开后,如何及何时重连的问题;本文简述了该方法:
class TcpClient : public QObject
{
public:
TcpClient();
private slots:
void slot_check_connect_status(void);
private:
QTimer *timer;
QTcpSocket client_;
bool connect_status_;
}
TcpClient::TcpClient()
{
//...
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(slot_check_connect_status()));
timer->start(1000);
//...
}
void TcpClient::slot_check_connect_status(void)
{
// check connect status, if connect_status_ is false, try reconnect.
}
上述方法通过设置状态标志位connect_status_,定时检测该标志位是否无效,如果无效,尝试重连网络连接,这样业务层面上就不需要再关心网络连接是否有效的问题了。