QTcpSocket断开后自动重连问题 auto connect after disconnected

本文探讨了在使用QTcpSocket时遇到的断开连接后自动重连的挑战。主要问题包括线程signal响应、如何避免界面卡死以及线程安全。理想的解决方案是利用Timer进行重连控制,以防止线程被长时间占用。同时,线程迁移和waitForConnected()的使用也需要谨慎,以免引发界面阻塞或线程错误。
摘要由CSDN通过智能技术生成
class SocketThread : public QThread
{
	Q_OBJECT

public://public functions
	SocketThread(QObject *parent);
	~SocketThread();
	void run();

public://public variables
	QTcpSocket* m_pTcpSocket;
	bool m_bServerConnected;
	QTimer m_timer;
	public slots:
		void OnSocketError(QAbstractSocket::SocketError);
		void OnSocketConnected();
		void OnSocketDisconnected();
		void ConnectServer();
signals:
		void ShowStatus(QString str);

private:

};
#include "socketthread.h"


SocketThread::SocketThread(QObject *parent)
: QThread(parent)
{
	m_bServerConnected = false;

	m_pTcpSocket = new QTcpSocket;
	connect(m_pTcpSocket, SIGNAL(connected()), this, SLOT(OnSocketConnected()));
	connect(m_pTcpSocket, SIGNAL(disconnected()), this, SLOT(OnSocketDisconnected()));
	connect(m_pTcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(OnSocketError(QAbstractSocket::SocketError)));

	connect(&m_timer, 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值