QT模块学习——UDP通讯

QT模块学习——UDP通讯

UDP通讯 就像是送信,只要有地址就可以传输,速度快,而且比较简单

ui设计界面:
在这里插入图片描述
代码:

#include "widget.h"
#include "ui_widget.h"
#include <QHostAddress>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    
    
    ui->setupUi(this);


    setWindowTitle("服务器端口:8888");


    //分配空间,指定父对象
    udpsocket = new QUdpSocket(this);


    //绑定
    udpsocket->bind(8888);


    //当对方成功发送数据过来,自动触发readyRead();信号
    connect(udpsocket,&QUdpSocket::readyRead,this,&Widget::dealMsg);
}


Widget::~Widget()
{
    
    
    delete ui;
}


void Widget::dealMsg(){
    
    
    char buf[1024]={
    
    0};
    QHostAddress cliaddr;//对方地址
    quint16 port;//对方端口
    qint64 len = udpsocket->readDatagram(buf,sizeof(buf),&cliaddr,&port);
    if(len>0){
    
    
        //格式化,
        QString str = QString("{%1:%2} %3").arg(cliaddr.toString())
                .arg(port).arg(buf);


        //给编辑区设置内容
        ui->recv->setText(str);
    }
}


void Widget::on_send_clicked()
{
    
    
    //获取ip和端口
    QString ip = ui->ip->text();
    qint16 port = ui->port->text().toInt();
    //获取编辑区内容
    QString str = ui->send_2->toPlainText();
    //给指定IP发送消息
    udpsocket->writeDatagram(str.toUtf8(),QHostAddress(ip),port);
}

猜你喜欢

转载自blog.csdn.net/m0_50210478/article/details/108652689