• QT TCP通信收发数据


    首先在工程文件.pro中加入

    QT       += network

    需要加的头文件

    #include <QTcpServer>
    #include <QTcpSocket>


    服务端

    1.创建初始化对象

    mServer = new QTcpServer();

    mSocket = new QTcpSocket();

    2.关联客户端

    connect(mServer,SIGNAL(newConnection()),this,SLOT(new_client()));

    3.启动监听服务

    mServer->listen(QHostAddress::Any,1122);

    4.接受数据

    mSocket = mServer->nextPendingConnection();//与客户端通信的套接字

    connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_client_data()));

    5.发送数据

    mSocket->write((char*)msg,5);


    实现代码

     1 tcpServer::tcpServer(QWidget *parent) :
     2     QDialog(parent),
     3     ui(new Ui::tcpServer)
     4 {
     5     ui->setupUi(this);
     6     mServer = new QTcpServer();
     7     //关联客户端连接信号newConnection
     8     connect(mServer,SIGNAL(newConnection()),this,SLOT(new_client())); //连接客户端
     9     //启动服务器监听
    10     mServer->listen(QHostAddress::Any,1122);
    11 }
    12 tcpServer::~tcpServer()
    13 {
    14     delete ui;
    15 }
    16 void tcpServer::new_client()
    17 {
    18      mSocket = mServer->nextPendingConnection();//与客户端通信的套接字
    19      //关联接收客户端数据信号readyRead信号(客户端有数据就会发readyRead信号)
    20      connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_client_data()));
    21  }
    22 void tcpServer::read_client_data()
    23 {
    24      //可以实现同时读取多个客户端发送过来的消息
    25      QTcpSocket *obj = (QTcpSocket*)sender();
    26      QByteArray msg = obj->readAll();
    27      unsigned short size = msg.size();
    28      unsigned char msg1[10] = {0};
    29      memcpy(msg1, msg.data(), size);
    30      qDebug()<<msg1[0]<<msg1[1]<<msg1[2]<<msg1[3];
    31 }
    32  
    33 void tcpServer::on_pushButton_clicked()
    34 {
    35     unsigned char msg[10];
    36     msg[0]='*';
    37     msg[1]=10;
    38     msg[2]=30;
    39     msg[4]=1;
    40     mSocket->write((char*)msg,5);
    41 }

    客户端

    1.创建初始化

    mSocket = new QTcpSocket();

    2.连接服务器,设置IP和端口

    mSocket->connectToHost(QHostAddress::LocalHost,1122);

    3.接收数据

    connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_data()));

    QByteArray msg = mSocket->readAll();

    4.发送数据

    mSocket->write((char*)msg,5);


    实现代码

     1 tcpClick::tcpClick(QWidget *parent) :
     2     QWidget(parent),
     3     ui(new Ui::tcpClick)
     4 {
     5     ui->setupUi(this);
     6     mSocket = new QTcpSocket();
     7    //关联数据信号
     8    connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_data()));
     9   //连接服务器,设置ip和端口号
    10     mSocket->connectToHost(QHostAddress::LocalHost,1122);
    11 }
    12 tcpClick::~tcpClick()
    13 {
    14     delete ui;
    15 }
    16 void tcpClick::read_data()
    17 {
    18     QByteArray msg = mSocket->readAll();
    19     unsigned short size = msg.size();
    20     unsigned char msg1[10] = {0};
    21     memcpy(msg1, msg.data(), size);
    22     qDebug()<<msg1[0]<<msg1[1]<<msg1[2]<<msg1[3];
    23 }
    24  
    25 void tcpClick::on_pushButton_clicked()
    26 {
    27     unsigned char msg[10];
    28     msg[0]='*';
    29     msg[1]=30;
    30     msg[2]=20;
    31     msg[4]=11;
    32     mSocket->write((char*)msg,5);
    33 }
  • 相关阅读:
    【转】SpringBoot使用Nacos配置中心
    隐藏或修改nginx返回的Server信息(以及隐藏版本号)
    SQLite初识
    手把手教你用WinForm制作地图编辑工具(二)
    手把手教你用WinForm制作地图编辑工具(一)
    VS2019离线安装包制作
    Python zip函数
    Python isinstance函数
    Python type 函数- Python零基础入门教程
    Python format 函数- Python零基础入门教程
  • 原文地址:https://www.cnblogs.com/wxh-53919/p/9300371.html
Copyright © 2020-2023  润新知