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

工作编码案例--UDP多播 和 本地套接字bind

问题一:组播绑定失效导致无法接收组播报文

背景
项目中一个封装的库负责UDP绑定,使用配置文件中指定的组播地址。设备为降低功耗会进入休眠状态,休眠时需要卸载网卡。唤醒后重新加载网卡,但发现程序无法接收到组播报文。

原因分析
排查发现,程序中组播绑定的设置在设备唤醒后失效,需要重新设置组播绑定。但绑定操作位于封装好的库(非开源)中,无法直接修改代码。

解决方案
在另一个程序中重新为网卡绑定组播地址,作为唤醒后恢复组播通信的补充机制。


问题二:本地套接字绑定失败(EADDRINUSE)

背景
本地server程序通过套接字通信,配有启动脚本。脚本在启动程序前会先执行rm命令删除对应的sock管道文件,然后立即启动程序完成套接字绑定及初始化。

问题现象
在大规模设备部署后,极低概率出现bind失败的情况,报错信息为EADDRINUSE,表示绑定时套接字管道文件已存在。

原因分析
rm命令返回成功后,文件未必立刻被删除,可能文件系统的同步延迟导致文件仍然存在。

解决方案
在启动脚本中增加删除文件的确认步骤:循环判断管道文件是否真正被删除,只有确认文件不存在后才启动程序。



http://www.kler.cn/a/455734.html

相关文章:

  • SQL-leetcode-180. 连续出现的数字
  • 如何使用fetch函数获取多个数据并同时使用(在嵌套的fetch函数之间传递数据)
  • `we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 这两个条件之间的区别
  • Bert中文文本分类
  • oracle怎样使用logmnr恢复误删除的数据
  • Day8补代码随想录 字符串part1 344.反转字符串|541.反转字符串II|卡码网:54.替换数字
  • 5.UE5横板2D游戏,摄像机移动和停止移动,
  • Linux下学【MySQL】表中插入和查询的进阶操作(配实操图和SQL语句通俗易懂)
  • NCR+可变电荷块——文献hub1
  • Ftrans数据摆渡系统 搭建安全便捷跨网文件传输通道
  • 如何循序渐进的学习人工智能
  • 国际版JAVA同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5
  • 使用sam进行零样本、零学习的分割实践
  • static 和const的作用面试常问
  • 生成excel文件(有备注和表头的情况)
  • java高频面试之SE-04
  • Linux | Ubuntu零基础安装 nvm 管理nodejs
  • 嵌入式学习-QT-Day02
  • 智能家居常用的无线通信协议及其特点
  • HarmonyOS NEXT 实战之元服务:静态案例效果--航空出行
  • Windows系统上配置eNSP环境的详细步骤
  • vue 前端 用iframe实现单点登录两个不同域名Vue项目相互跳转并且传递Token
  • 如何使用缓存技术提升Python爬虫效率
  • 鸿蒙Next状态管理V2 - @Once初始化用法总结
  • 设计模式之享元模式:看19路棋盘如何做到一子千面
  • 【视觉惯性SLAM:六、图优化库(1):g2o的使用指南】