QT关于UDP通讯设置
2018-02-05 22:29
591 查看
QT关于UDP通讯设置
UDP(用户数据报协议)是一个轻量级的,不可靠的、面向数据报的,无连接的协议,用于可靠性不是非常重要的情况。UDP一般分为发送端和接收端。QUdpSocket类用来发送和接收UDP数据报,简单的来说就是“套接字”,“套接字”就是一个IP地址加上一个port端口号。这样使用套接字就可以实现网络上两台主机的两个应用程序之间的通讯。发送端
首先在.pro文件中添加“ QT += network”,在头文件下声明#include <QUdpSocket>再声明一个私有对象:QUdpSocket *sender;再在设计界面上放入一个按钮,关联按下槽函数与信号函数。
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); sender = new QUdpSocket(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { QByteArray datagram = "hello word!"; sender->writeDatagram(datagram.data(),datagram.size(),QHostAddress::Broadcast,45454); }
接收端
首先在.pro文件中添加“ QT += network”,在头文件下声明#include <QUdpSocket>再声明一个私有对象:QUdpSocket *receive;添加一个槽函数;
private slots: void processPendingDatagram();主函数:
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); receive = new QUdpSocket(this); receive->bind(45454,QUdpSocket::ShareAddress); connect(receive,&QUdpSocket::readyRead,this,&MainWindow::processPendingDatagram); } MainWindow::~MainWindow() { delete ui; } void MainWindow::processPendingDatagram() { // 拥有等待的数据报 while(receive->hasPendingDatagrams()) { QByteArray datagram; // 让datagram的大小为等待处理的数据报的大小,这样才能接收到完整的数据 datagram.resize(receive->pendingDatagramSize()); // 接收数据报,将其存放到datagram中 receive->readDatagram(datagram.data(), datagram.size()); ui->label->setText(datagram); } }
其中发送端的QHostAddress::Broadcast来表示广播地址,等价于QHostAddress("255.255.255.255")。端口号可以随意指定的,但是一般使用1024以上的端口。
效果如下:
相关文章推荐
- 关于Qt移植后环境变量的设置 qt移植到arm中文显示问题解决 实现pc与tiny210 arm开发板 udp通信(续上)
- 关于Qt移植后环境变量的设置 qt移植到arm中文显示问题解决 实现pc与tiny210 arm开发板 udp通信
- QT设置关于TCP通讯
- 关于嵌入式Qt字体大小设置无效的原因分析
- QT关于网络TCP通讯的记录(二)
- qt中关于设置颜色(QPalette和QPixmap)
- 关于Qt使用QPalette设置Qwidget背景色无效的解决办法及分析
- qt中关于设置颜色(QPalette和QPixmap)
- qt中关于设置颜色
- 关于QT UDP组播的两个问题
- qt中关于QWidget的背景颜色和背景图片的设置
- 最近玩了一下qt5.2.1,顺着写点东西,关于这个版本设置程序主窗口居中
- 关于Qt的环境变量PROJROOT设置
- Qt:基于TCP和UDP的局域网P2P(局域网)通讯封装
- 关于LG PLC MODBUS 通讯设置方法
- Qt-网络与通信-UDP网络通讯
- qt中关于设置颜色
- qt中关于设置颜色
- 关于QT利用setStyleSheet为主控件添加背景图片,而不影响其子控件的背景设置
- QT下的UDP通讯