QTcpSocket多线程实现数据接收以及断开重连

本文介绍了在面临多个QTcpSocket需要接收大量数据的场景下,如何利用多线程进行数据接收,并且在socket与服务器断开连接时实现自动重连的功能。通过重写QTcpSocket类以及在多线程环境中应用该重写后的类,确保了高效稳定的数据通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工程中如果需要多个socket,切每个socket都要接收大量的数据,这时就需要考虑在线程中接收数据了,如果socket与服务端断开,需要进行重连。
具体代码如下:`
1、重写QTcpSocket,头文件:

#ifndef TCPSOCKET_H
#define TCPSOCKET_H

#include <QObject>
#include <QTcpSocket>
#include <QTimer>

class TcpSocket : public QTcpSocket
{
   
    Q_OBJECT
public:
    TcpSocket(const QString& ip, int port);

    void connectHost(const QString& ip, int port);

    void slot_timeout();
public slots:
    void slot_connect();
    void slot_disconnect();
    void slot_readyRead();

    void slot_startConnect();

signals:
    void sig_startConnect(int);

private:
    QString m_ip;
    int m_port;
    QStringList m_dataList;

};

#endif // TCPSOCKET_H

1.2、源文件

#include "TcpSocket.h"
#include <QThread>

#include <QDebug>

TcpSocket::TcpSocket(const QString &ip, int port) : m_ip(ip), m_port(port)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值