当前位置: 首页 > 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.dtcms.com/a/259099.html

相关文章:

  • 云原生与人工智能的融合:从弹性架构到智能运维的IT新范式
  • 华为云Flexus+DeepSeek征文 | 掌握高效开发:利用华为云ModelArts Studio在VS Code中配置Cline AI编程助手
  • [AI工具]Fish-speech部署教程(环境搭建记录)
  • spring boot项目整合百度翻译
  • 北斗导航 | 卫星载噪比(C/N₀)的定义与解析
  • 什么是PD快充诱骗取电协议,它有哪些特点及应用场景如XSP01A
  • 【HLS】pragma HLS bundle的用法 AXI接口
  • uniapp小程序在线预览
  • 前端流式接口/Socket.IO/WebSocket的区别和选用
  • 高精度RTK定位导航模块软硬件协同设计
  • Redis大规模Key遍历实战:性能与安全的最佳实践
  • 【网站内容安全检测】之3:获取所有外部域名访问后图像
  • 【邀请】点击邀请链接参加阿里云训练营活动,完成学习送礼品+户外折叠凳,一个小时就能完成
  • UI前端与大数据的深度融合:推动产品设计迭代升级
  • WordPress目录说明
  • Catchadmin 使用相关问题
  • Fisco Bcos学习 - 搭建第一个区块链网络
  • WinForm使用webbrowser加mathjax显示数学公式符号
  • js截取地址详细信息(除去省市区、市市区、自治区市区)
  • Proteus仿真51单片机控制L298N PWM电机调速
  • 深入GPU编程:从硬件架构到内核优化
  • Gated CNN Block,抑制背景噪声、强化边缘特征,更好地融合不同尺度的特征信息
  • python的智慧养老院管理系统
  • 深入解析RS485通信:从原理到Linux驱动开发实践
  • 图像处理解决方案
  • Promptify与ReActAgent
  • Docker、Docker composer与Docker desktop
  • 【Elasticsearch】es初识,在项目架构中的用途,与mysql和kafka的配合使用,
  • .NET 7.0 EF Core:一、创建Web API 项目基础框架和用户表的增删改查
  • C++ 第二阶段项目三:图形绘制库