当前位置: 首页 > news >正文

QUdpScoket 组播实现及其中的踩坑点记录

QUdpScoket 组播实现及其中的踩坑点记录

  1. QUdpSocket要想组播需要打开MulticastTtlOption配置项,否则无法生效,亲身踩坑经历
	m_socket=new QUdpSocket(this);m_socket->setSocketOption(QAbstractSocket::MulticastTtlOption,1);
  1. 确定一个组播地址,并且要在socket绑定成功进入BoundState状态时加入组播组中,不然会输出提示:“没有在BoundState时joinMulticastGroup”。
    这里我没有测此时组播是否是正常的,而是根据提示修改了用法,感兴趣的朋友可以尝试一下。
	m_address=QHostAddress("224.0.1.55");connect(m_socket,&QUdpSocket::stateChanged,[this](QAbstractSocket::SocketState state){if(state==QAbstractSocket::BoundState){m_socket->joinMulticastGroup(m_address);  //加入组播}});
  1. 监听地址和端口号,这里也有一个坑
    m_socket->bind(QHostAddress::AnyIPv4,m_clientPort);connect(m_socket,&QUdpSocket::readyRead,[this](){});

可以监听固定的地址,也可以监听任意地址。
端口号有个坑,博主测试的时候用的一台机器,然后两个QUdpSocket都监听了同一个端口,然后始终没有正常,后来才意识到可能是端口号竞争导致的,后来改用两个不同的端口号就正常了。

  1. 读写也踩了一下坑,本来以为write和readAll这些接口都可以用,结果用的时候提示没有打开,数据一直没有发送出去,后面改用了writeDatagram才正常。这一部分有经验的朋友欢迎指正。

您的鼓励就是我最大的动力,请多多点赞收藏加关注,谢谢。
有问题欢迎评论,合作等等都可以。

http://www.lqws.cn/news/524431.html

相关文章:

  • 【DevTools浏览器开发者工具反调试之无限Debugger跳过】
  • 如何防止自己的电脑被控制?开启二次验证保护教程
  • 强化学习理论基础:从Q-learning到PPO的算法演进(1)
  • [日志收集]
  • 刷题 | 牛客 - js中等题-下 (更ing)45/54知识点解答
  • 深度学习实战112-基于大模型Qwen+RAG+推荐算法的作业互评管理系统设计与实现
  • Java期末复习题(二)
  • 计算机网络-----详解HTTPS协议
  • 日本生活:日语语言学校-日语作文-沟通无国界(5)-题目:我的一天
  • C# 中 string.Equals 以及 StringComparison 枚举的不同选项
  • SQL进阶:CASE表达式
  • 数组基础知识
  • IBMS 智能化系统:让建筑提前进入 AIoT 智慧纪元​
  • Linux基本指令篇 —— mv指令
  • 时序数据库 TDengine 助力华锐 D5 平台实现“三连降”:查询快了,机器少了,成本也低了
  • 以太坊执行客户端和共识客户端各自的作用及意义
  • java 对接ETH(以太坊) 交易相关资料
  • 区间求最值问题高效解决方法
  • Linux下使用docker nginx部署vue前端项目工程
  • vue2 使用el-form中el-form-item单独绑定rules不生效问题
  • IoT/HCIP实验-5/基于NB-IoT的智慧农业实验(平台侧开发+端侧编码+基础调试分析)
  • LOOP如何让长周期交互LLM代理在复杂环境中实现突破?
  • 正则表达式匹配实现
  • Boosting:从理论到实践——集成学习中的偏差征服者
  • Prompt:面向目标的提示词
  • WeakAuras Lua Script [ICC BOSS 12 - The Lich King]
  • Objective-C面向对象编程:类、对象、方法详解(保姆级教程)
  • 自动驾驶数据特征提取实战:用Python打开智能驾驶的新视角
  • 深入理解残差网络(ResNet):原理与PyTorch实现
  • Mysql数据库操作大全万字详解