QT之UDP通信
时间:2022-07-23
本文章向大家介绍QT之UDP通信,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
参考链接:
https://www.cnblogs.com/wurenzhong/p/8030220.html
这里用的无线网:ipconfig查看下ip
udpsend:
udpSend.cpp:
#include "udpSend.h"
//#include <QUdpSocket>
#include <QMessageBox>
udpSend::udpSend(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
mSocket = new QUdpSocket();
}
void udpSend::on_sendBt_clicked()
{
//单播
qint64 len = mSocket->writeDatagram(ui.textEdit->toPlainText().toUtf8(),QHostAddress("192.168.0.194"),8007);
//组播ip地址范围:224.0.0.0-239.255.255.255
//qint64 len = mSocket->writeDatagram(ui.textEdit->toPlainText().toUtf8(),QHostAddress("224.0.0.100"),6677);
//广播
// qint64 len = mSocket->writeDatagram(ui.textEdit->toPlainText().toUtf8(), QHostAddress::Broadcast, 8007);
//QMessageBox::information(this, "Warning", ui.textEdit->toPlainText().toUtf8());
}
udpSend.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_udpSend.h"
#include <QUdpSocket>
class udpSend : public QMainWindow
{
Q_OBJECT
public:
udpSend(QWidget *parent = Q_NULLPTR);
private:
Ui::udpSendClass ui;
QUdpSocket *mSocket;
private slots:
void on_sendBt_clicked();
};
udpRecv:
udpRecv.cpp
#include "udpRecv.h"
#include <QMessageBox>
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
udpRecv::udpRecv(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//创建对象 初始化
mSocket = new QUdpSocket();
//绑定
mSocket->bind(QHostAddress::AnyIPv4,8007);
//QMessageBox::information(this, "Warning", QString(QHostAddress::AnyIPv4));//不会乱码
//关联读数据信号readyread
connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_data()));
}
void udpRecv::read_data()
{
QByteArray array;
QHostAddress address;
quint16 port;
array.resize(mSocket->bytesAvailable());//根据可读数据来设置空间大小
mSocket->readDatagram(array.data(),array.size(),&address,&port); //读取数据
ui.listWidget->addItem(array);//显示数据
//发送反馈数据
}
void udpRecv::on_checkBox_clicked(bool checked)
{
if(checked)
{
//加入组播
mSocket->joinMulticastGroup(QHostAddress("224.0.0.100"));
}
else
{
//退出组播
mSocket->leaveMulticastGroup(QHostAddress("224.0.0.100"));
}
}
udpRecv.h:
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_udpRecv.h"
#include <QUdpSocket>
class udpRecv : public QMainWindow
{
Q_OBJECT
public:
udpRecv(QWidget *parent = Q_NULLPTR);
private:
Ui::udpRecvClass ui;
QUdpSocket *mSocket;
private slots:
void on_checkBox_clicked(bool);
void read_data();
};
测试结果:
- OpenStack Spice协议配置
- 源码解读ODL的MAC地址学习(二)
- SpringBoot开发案例之整合Spring-data-jpa进阶篇
- SpringBoot开发案例之微信小程序录音上传
- SpringBoot开发案例之微信小程序文件上传
- SpringBoot开发案例之配置静态资源文件路径
- 源码解读ODL的MAC地址学习(一)
- SpringBoot开发案例之配置Druid数据库连接池
- SpringBoot开发案例之mail中文附件乱码
- SpringBoot开发案例之整合Swagger篇
- SpringBoot开发案例之整合mail队列进阶篇
- SpringBoot开发案例之集成SSL证书
- SpringBoot开发案例之整合mail队列篇
- SpringBoot开发案例之整合日志管理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- grpc调用主要流程分析(一)
- Array - 42. Trapping Rain Water Hard
- Go modules 简介
- Spring事务的传播行为
- String - 71. Simplify Path
- 性能测试工具——wrk
- String - 67. Add Binary
- Math - 50. Pow(x, n)
- String - 44. Wildcard Matching
- DFS&BFS - 37. Sudoku Solver
- Array - 36. Valid Sudoku
- Array - 57. Insert Interval
- Binary Search - 378. Kth Smallest Element in a Sorted Matrix
- Array - 59. Spiral Matrix II
- Array - 54. Spiral Matrix