QTcpServer / QTcpSocket 简单示例

先看服务端

#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,&ALOEMSocketControl::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();
}
发布了251 篇原创文章 · 获赞 458 · 访问量 48万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503

分享到微信朋友圈

×

扫一扫,手机浏览