Qt实现UDP发送与接收操作

news/2024/5/18 16:08:49 标签: udp, 网络协议, 网络

目录

一、为什么要写这篇文章,因为我就是要另辟蹊径,当然也是汲取了网上大咖们的经验,尽量简洁的进行总结

二、关于接收数据需的条件,需要绑定本地IP地址和端口号,可解释为此时为服务器模式,远端为客户端模式,实现的代码非常简单几行代码可以搞定

三、数据的发送,就比较简单了,前提是需要知道对方的IP地址,端口号



一、为什么要写这篇文章,因为我就是要另辟蹊径,当然也是汲取了网上大咖们的经验,尽量简洁的进行总结

1、多线程使用;

2、不使用信号槽接收;

3、同时实现发送接收功能;

二、关于接收数据需的条件,需要绑定本地IP地址和端口号,可解释为此时为服务器模式,远端为客户端模式,实现的代码非常简单几行代码可以搞定
QUdpSocket udpServer;   //定义UDP对象
QByteArray recvbuff;    //接收数据缓存
udpServer.bind(QHostAddress::AnyIPv4,LPORT);    //IP和端口绑定

线程数据接收代码,可以在while()内实现

udpServer.waitForReadyRead(1000);       //等待接收数据,没有数据情况下会等待到设定时间,有数据会返回true,并且不需要等待到设定时间
if(!udpServer.hasPendingDatagrams())    //判断是否有数据
    continue;
QByteArray temBuff;        //临时内存
temBuff.resize(int(udpServer.pendingDatagramSize()));    //申请临时内存大小
udpServer.readDatagram(temBuff.data(), temBuff.size(),&RIP,&RPORT); //将数据保存至临时内存
recvbuff.append(temBuff);  //将临时内存添加到接收数据缓存区等待解析处理
三、数据的发送,就比较简单了,前提是需要知道对方的IP地址,端口号

        比如发送一段帧数据如下,具体数据自己定义


QByteArray array;
array.append(0x55);
array.append(0xAA);
array.append(0x07);
array.append(crcData(array));

udpServer.writeDatagram(array, RIP, RPORT);


http://www.niftyadmin.cn/n/476281.html

相关文章

Windows下通过hosts文件隐藏局域网IP

通过hosts文件隐藏局域网IP 局域网中,隐藏IP访问局域网网址。 1、hosts文件 位置: C:\Windows\System32\drivers\etc 在文件尾部,增加DNS解析,IP和网址对应 192.168.92.16 ipython.com2、更新网络解析 更新网络解析: ipconfi…

Linux与Windows:个人使用体验的差异与感悟

目录 一、开放性与自由度 二、软件管理和安装方式 三、命令行的强大性 在长期使用Linux和Windows两种常见的操作系统后,我发现它们之间存在着一些差异,使得在切换使用时会出现一些让我费解的情况。在这篇文章中,我将分享我个人对于Linux和…

一、如何利用XR进行多端转换

1、下载XR组件 2、找到XR Plugin Management(XR 插件管理),进行添加的所需设备的插件,点击Add添加 3、选择切换平台 4、设置相关参数 代码: using UnityEngine; using UnityEngine.XR.Management;public class XRPlat…

机器人——正向运动学(Forward Kinematics)与逆向运动学(Inverse Kinematics)

正向运动学和反向运动学分别是什么意思 正向运动学是指从机器人的关节运动推导出末端执行器的运动的过程,也就是从机器人的关节坐标计算出末端执行器的位置和姿态信息的过程。反向运动学则是指从末端执行器的位置和姿态信息推导出机器人的关节坐标的过程。简单来说…

软测实验室质量手册中结构要求部分如何满足

根据cnas官方指定的文件中要求,cnas软件检测机构应是一个能够承担法律责任的实体。 实验室所从事检测和校准工作应符合本准则的要求,并能满足客户、法定管理机构或对其提供承认的组织的需求。管理体系应覆盖实验室固定设施、离开固定设施的场所或相关的临…

使用crontab定时执行任务

文章目录 1. 基本命令2. 设置定时任务3. 重启cron4. 注意5. 示例5.1 脚本5.2 修改脚本权限5.3 定时任务 6. 参考 1. 基本命令 通过crontab -e命令,启动编辑器,编辑时程表。 crontab -e# -e:编辑时程表 # -r: 删除目前的时程表 # -l: 列出目…

AQS 原理解读

目录 概述 手写不可重入锁 自定义同步器 自定义锁 测试 输出 具体 起源 目标 设计 state 设计 阻塞恢复设计 队列设计 为什么 AQS 需要一个虚拟 head 节点 概述 全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架 特点&…

Intellij IDEA HTTP Request 请求设置Cookie

使用Intellij IDEA 的 HTTP Request 请求中带有Cookie时,需要将 Cookie单词要写成全小写的“cookie”,否则设置的Cookie不会生效。 POST http://localhost:9091/rest/miracle/findList Content-Type: application/json cookie: JSESSIONIDce22a4ed-b185…