【Qt】基于QTcpSocket的TCP客户端实现

本文档展示了如何使用QTcpSocket类创建一个客户端,详细解释了从创建套接字、连接服务器到发送和接收数据的完整过程。代码包括了ATcpClient类的定义与实现,该类在QThread中运行,支持重连和状态管理,适用于其他项目集成。在main.cpp中进行了简单的测试,向服务器发送数据。

客户端通信流程:
①创建套接字:new QTcpSocket。
②连接服务器:可以使用QTcpSocket类的connectToHost()函数来连接服务器。
③向服务器发送或者接受数据。

下面代码一共有三个文件,分别是main.cpp、atcpclient.h、atcpclient.cpp.

其中main.cpp是用于测试ATcpClient的。封装好了的ATcpClient运行于线程中,可用于其他小项目中。

// atcpclient.h

#ifndef ATCPCLIENT_H
#define ATCPCLIENT_H

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

class ATcpClient : public QObject
{
    Q_OBJECT
public:
    ATcpClient(QString sServerIp, int nPort, QObject *parent = 0);
    virtual ~ATcpClient();

    int  sendData(QByteArray baData);
    void setReConnectInterval(int nMSec);

protected:
    virtual void initInThread();
    virtual void deinitInThread();

    virtual void doReConnect();
    virtual void setConnectStatus(bool bIsConnect);

    virtual int doSendDataImp(QByteArray baData);
    virtual int doRecvDataImp(const QByteArray &baRecvData);

signals:
    void sigSendData(QByteArray baData);
    void sigOnDeinit();

private slots:
    void sltSendData(QByteArray baData);
    void sltReadyRead();

    void sltOnConnected();
    void sltOnDisonnected();
    void sltOnError(QAbstractSocket::SocketError nErrCode);
    void sltOnStateChanged(QAbstractSocket::SocketState nSocketState);

private:
    QString m_sServerIp;
    int m_nPort;
    int m_nInterval;
    bool m_bConnected{false};

    QThread* m_pThread{nullptr};
    QTimer* m_pTimer{nullptr};
    QTcpSocket* m_pSocketClient{nullptr};
};

#endif 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值