QTcpServer / QTcpSocket 简单示例

138 篇文章 196 订阅

先看服务端

#include <QObject>
#include <QTcpServer>
#include <QTcpSocket>

class CTcpServer : public QObject
{
    Q_OBJECT
public:
    explicit CTcpServer(QObject *parent = 0);
    ~CTcpServer();

private slots:
    void onNewConnection();
    void onReadMessage();

private:
    void _writeData(QString data);
private:
    QTcpServer * m_pTcpServer;
    QTcpSocket * m_pTcpSocket;
};

源文件

CTcpServer::CTcpServer(QObject *parent) : QObject(parent)
{
    m_pTcpServer = new QTcpServer();
    m_pTcpServer->listen(QHostAddress::Any,1122);
    connect(m_pTcpServer,&QTcpServer::newConnection,this,&TLTcpServer::onNewConnection);
}

void CTcpServer::onNewConnection()
{
    m_pTcpSocket = m_pTcpServer->nextPendingConnection();
    connect(m_pTcpSocket,&QTcpSocket::readyRead,this,&CTcpServer::onReadMessage);
}

void CTcpServer::onReadMessage()
{
    QByteArray ba = m_pTcpSocket->readAll();

}

void CTcpServer::_writeData(QString data)
{
    QByteArray array = data.toStdString().c_str();
    m_pTcpSocket->write(array,strlen(array));
}

客户端

#include <QObject>
#include <QTcpSocket>

class CTcpSocket : public QObject
{
    Q_OBJECT
public:
    explicit CTcpSocket(QObject *parent = 0);
    ~CTcpSocket();
    void setHostAddr(QString hostAddr);//设置服务端ip地址
    void setSendData(QByteArray data);
private slots:
    void onReadyRead();
private:
    QTcpSocket * m_pTcpSocket = NULL;
};

源文件

CTcpSocket::CTcpSocket(QObject *parent) : QObject(parent)
{
    m_pTcpSocket = new QTcpSocket();
connect(m_pTcpSocket,&QTcpSocket::readyRead,this,&CTcpSocket ::onReadyRead);
}

CTcpSocket::~CTcpSocket()
{
    delete m_pTcpSocket;
}

void CTcpSocket::onReadyRead()
{ 
   QByteArray ba = m_pSocket->readAll();
    qDebug() << "tcpSocket::onReadyRead() ba="<<ba;
}
void CTcpSocket::setHostAddr(QString hostAddr)
{
    m_pTcpSocket->connectToHost(hostAddr,5678);
    if(!m_pTcpSocket->waitForConnected()){
        qDebug() << "Rcontrol socket connect error";
    }
    else{
        qDebug() << "Rcontrol socket connect success";
    }
}

void CTcpSocket::setSendData(QByteArray data)
{
    m_pTcpSocket->write(data);
    m_pTcpSocket->flush();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luoyayun361

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值