tcp客户端

1.头文件

#ifndef CTCPCLIENT_H
#define CTCPCLIENT_H

#include <QObject>
#include <QTcpSocket>

class CTcpClient : public QObject
{
    Q_OBJECT
public:
    CTcpClient(const QString& ip, qint16 port, QObject* parent = nullptr);
    ~CTcpClient();
public slots:
    void ConnectedSlot();
    void DisConnectedSlot();
    void StateChangedSlot(QAbstractSocket::SocketState state);
    void ReadyReadSlot();
private:
    QTcpSocket* m_pSocket;  // tcp客户端
};

#endif // CTCPCLIENT_H

2.源文件

#include "ctcpclient.h"
#include <QDebug>

CTcpClient::CTcpClient(const QString& ip, qint16 port, QObject* parent):
    QObject(parent),
    m_pSocket(new QTcpSocket(this))
{
    connect(m_pSocket, &QTcpSocket::connected, this, &CTcpClient::ConnectedSlot);
    connect(m_pSocket, &QTcpSocket::disconnected, this, &CTcpClient::DisConnectedSlot);
    connect(m_pSocket, &QTcpSocket::stateChanged, this, &CTcpClient::StateChangedSlot);
    connect(m_pSocket, &QTcpSocket::readyRead, this, &CTcpClient::ReadyReadSlot);
    m_pSocket->setSocketOption(QAbstractSocket::KeepAliveOption, 1);    // 设置保持连接
    // 连接服务端
    m_pSocket->connectToHost(ip, port);
    m_pSocket->waitForConnected(3000);
}

CTcpClient::~CTcpClient()
{
    if(m_pSocket != nullptr) {
        m_pSocket->close();
    }
}

void CTcpClient::ConnectedSlot()
{
    qDebug() << "客户端已连接";
}

void CTcpClient::DisConnectedSlot()
{
    qDebug() << "客户端已断开连接";
}

void CTcpClient::StateChangedSlot(QAbstractSocket::SocketState state)
{
    qDebug() << "状态:" << state;
}

void CTcpClient::ReadyReadSlot()
{
    QByteArray data = m_pSocket->readAll();
    qDebug() << "接收到的数据:" << data;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容