客户端通信流程:
①创建套接字: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

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





