Qt网络编程 TcpClient客户端

需要在.pro文件中加

QT += network
客户端头文件:
#ifndef TCPCLIENT_H
#define TCPCLIENT_H
 
#include <QObject>
#include <QTcpSocket>
 
class TcpClient :public QObject
{
    Q_OBJECT
public:
    TcpClient();
    ~TcpClient();
 
    bool sendData(char *pBuffer,int nLen = 0);
 
    bool sendData(const QByteArray& array);
protected:
    void init();
 
private slots:
 
    void slotReadData();
 
    void slotDisconnected();
 
    void slotConnected();
 
signals:
 
    void sigRecvData(char* buffer,int nLen);
    void sigRecvArray(const QByteArray& array);
    void sigConnected();
    void sigDisconnect();
 
private:
    QTcpSocket *m_pSocket;
    //缓冲区
    char *m_pBuffer;
    //缓冲区长度
    int m_nBuffSize;
};

客户端源文件

#endif // TCPCLIENT_H
#include "TcpClient.h"
#include <QHostAddress>
#include <QHostInfo>
#include <QDebug>
 
TcpClient::TcpClient()
{
    init();
}
 
TcpClient::~TcpClient()
{
 
}
 
bool TcpClient::sendData(char *pBuffer, int nLen)
{
    if(m_pSocket != Q_NULLPTR)
    {
        if(m_pSocket->write(pBuffer,nLen) <= 0)
        {
            qDebug()<<"send failed!";
            return false;
        }
    }
    return true;
}
 
bool TcpClient::sendData(const QByteArray &array)
{
    if(m_pSocket != Q_NULLPTR)
    {
        if(m_pSocket->write(array) <= 0)
        {
            qDebug()<<"send failed!";
            return false;
        }
    }
    return true;
}
 
void TcpClient::init()
{
    QHostInfo hostInfo = QHostInfo::fromName(QHostInfo::localHostName());
    m_pSocket = new QTcpSocket;
    m_pSocket->connectToHost("192.168.1.35",5000); //链接服务器
 
    connect(m_pSocket,&QTcpSocket::readyRead,this,&TcpClient::slotReadData); //读取服务端数据
    connect(m_pSocket,&QTcpSocket::disconnected,this,&TcpClient::slotDisconnected); //断开链接
    connect(m_pSocket,&QTcpSocket::connected,this,&TcpClient::slotConnected); //连接服务器
 
}
 
void TcpClient::slotReadData()
{
    if(m_pSocket != Q_NULLPTR)
    {
        QByteArray array = m_pSocket->readAll();
        if(!array.isEmpty())
        {
            m_nBuffSize = array.size();
            m_pBuffer = array.data();
            emit sigRecvData(array.data(),array.size());
            emit sigRecvArray(array);
        }
    }
}
 
void TcpClient::slotDisconnected()
{
    qDebug()<<"disConnected server";
    emit sigDisconnect();
}
void TcpClient::slotConnected()
{
    qDebug()<<"Connected server";
    emit sigConnected();
}

                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值