ios App 发送广播失败解决

记录开发 ios App 使用 c++ 混编时遇到的问题:

开发环境

macOS Sonoma(最新版本14.3.1)

Xcode Version 15.2

ipadOS(最新版本17.3.1)

问题:在mac 上 和 ipad上测试,当 udp 发送广播,地址为 255.255.255.255 时 send失败,wireshark 抓包没有发送出去,改成单播地址就可以发成功。没更新ipad前 ios 15 上是可以发广播的,怀疑是升级到17后 安全性提高了?在网上搜说需要 申请组播广播权限,c++伪代码:

 int port=0;WHUDP  *wh =new WHUDP();wh->ServerInit("0.0.0.0",  port);whls.push_back(wh);//发送for(int i=0;i<whls.size();i++){whls[i]->sendcmd("255.255.255.255", serverport,cmd);}void WHUDP::ServerInit(const char *loaclip,int localport) //用于广播
{CreateSocket();uport = localport;//设置非阻塞setnonblocking( usock ,1);if (setbroadcast( usock ,1)<0) //if (::setsockopt( usock , SOL_SOCKET, SO_BROADCAST, (char FAR*)&opt, sizeof(opt)) <0){debug_printf("setsockopt SO_BROADCAST failed ! [%ld]\n", GetLastErrorCode());ShutAndClose( usock );return  ;}if (setreuseaddr( usock ,1)<0) //if (::setsockopt( usock , SOL_SOCKET, SO_REUSEADDR, (char FAR*)&opt1, sizeof(opt1)) <0){debug_printf("setsockopt SO_REUSEADDR failed ! [%ld]\n", GetLastErrorCode());ShutAndClose( usock );return  ;}if (false == BindAddrPort( loaclip , uport)){//cout << "bind error :" << GetLastError() <<endl;ShutAndClose(  usock );}
}void WHUDP::sendcmd(const char *ip, unsigned short remoteport,char * cmd)
{char  szMsg[1024]={0};strcpy(szMsg,  cmd);//int nRet = ::sendto( usock , szMsg, 50, 0, (sockaddr*)&m_toAddr, sizeof(m_toAddr));int nRet =Send(szMsg,50,"255.255.255.255",remoteport);if (nRet <=0){debug_printf("sendcmd sendto() failed ! [%ld]\n", GetLastErrorCode());}debug_printf("ok...\n");
}

解决:根据下面网站填写申请

https://developer.apple.com/contact/request/networking-multicast

等待邮件回复,通过后登录苹果开发者中心 查看证书修改,之前我没有申请过 证书就没有 Additional Capabilities 没有这一项,xcode 也没有 Multicast Networking ,现在有了 需要证书 和 xcode配置一下,广播地址255.255.255.255就可以发送成功了

证书勾选保存

 xcode

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨域引起的两个接口的session_id不是同一个

来源场景&#xff1a; RequestMapping(“/captcha”)接口设置了SESSION_KEY&#xff0c;也能获取到&#xff0c;但是到了PostMapping(“/login”)接口就是空的&#xff0c;由于跨域导致的两个session_id不是同一个 /*** 系统用户 前端控制器*/ Controller CrossOrigin(origins…

【数据结构和算法初阶(C语言)】双向循环带头链表的增删查改详解(天才设计的链表结构,应用简单逆天!!!!!)

目录 ​编辑​编辑 1.双向链表的定义&#xff1a;前赴后继 2.带头链表的定义-----哨兵位 3.增删查改 3.1创建新节点函数----方便后续增加节点调用 3.2创建哨兵位----创建头结点 3.3增加节点&#xff0c;尾部插入数据 3.4尾删除 3.5查找函数----遍历对比&#xff…

AcWing 562.壁画

咱先看一眼算法标签&#xff0c;发现是思维题、枚举、前缀和 Buttt其实我们根据上诉的样例解释部分就会发现&#xff0c;其实这就是一个长度为⌈n/2⌉&#xff08;向上取整哦&#xff09;的连续子数组的最大和。 这题我也用暴力法试过啦&#xff0c;很明显会TLE 如果你对dp题…

Mac M系列芯片如何重新安装系统

使用可引导安装器重新安装&#xff08;可用于安装非最新的 Mac OS&#xff0c;系统降级&#xff0c;需要清除所有数据&#xff0c;过程确保连接上网络&#xff0c;虽然这种方式不会下载 Mac OS&#xff0c;但是需要下载固件等信息&#xff09; 插入制作好的可引导安装器&#x…

【使用imgaug库调整图像大小并修改对应的XML标签框】

使用imgaug库可以方便地进行图像增强操作&#xff0c;包括调整图像大小。以下是使用imgaug库调整图像大小并修改对应的XML标签框的示例脚本&#xff1a; 注意修改输入文件夹路径、输出文件夹路径和目标尺寸为自己内容。 input_folder "path/to/your/input_folder" …

kalibr标定ZED2i双目加imu

一、录制bag 本人使用的zed2i相机。 rosbag record -O 32 /zed2i/zed_node/imu/data /zed2i/zed_node/imdata_raw /zed2i/zed_node/left/image_rect_color /zed2i/zed_node/right/image_rect_color /zed2i/zed_node/left_raw/image_raw_color /zed2i/zed_node/right_raw/ima…

Matlab|【免费】基于合作博弈的综合能源系统利益分配优化调度

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序实现的模型为综合能源系统利益分配优化调度&#xff0c;采用合作博弈方法&#xff0c;模型针对IES系统的P2G、电解槽、甲烷反应器、储氢罐、CHP和燃气锅炉等设备进行建模&#xff0c;实现基于合作博弈的…

std::shared_from_this注意事项:exception bad_weak_ptr

1.不可以在构造函数中调用shared_from_this() 因为它的实现是&#xff1a; _LIBCPP_INLINE_VISIBILITYshared_ptr<_Tp> shared_from_this(){return shared_ptr<_Tp>(__weak_this_);}也就是它依赖的__weak_this_此时还未创建完成。 2.一定要public继承 class MyTy…

大数据开发(Java面试真题-卷二)

大数据开发&#xff08;Java面试真题&#xff09; 1、请简要说明Java中equeals()和hashCode()的作用及区别&#xff1f;2、Java中的四种访问修饰符及它们之间的区别&#xff1f;3、请解释Java中的异常处理机制&#xff0c;包括checked exception和unchecked exception?4、Java…

Linux 学习笔记(10)

十、 进程管理 进程就是运行中的程序&#xff0c;一个运行着的程序&#xff0c;可能有多个进程。 比如 LinuxSir.Org 所用的 WWW 服务器是 apache 服务器&#xff0c;当管理员启动服务后&#xff0c;可能会有好多人来访问&#xff0c;也就是说许多用户来同时请 求 htt…

QT debug编译失败:xxx/bin/ld.exe: cannot find -lxxd1

原因&#xff1a;由于编译时&#xff0c;使用debug模式下&#xff0c;动态库没有对应的lxxd1中的xx库 解决方案1&#xff1a;改为release编译&#xff1b; 解决方案2&#xff1a;在引用的三方pri文件中&#xff0c;去掉多余的d #修改前 if(!debug_and_release|build_pass):CON…

沃德的背包

题目描述 沃德进入源码世界的路上有很多宝石&#xff0c;可是沃德的背包只能背总重量不超过m的宝石&#xff0c;路上一共有n个宝石&#xff0c;每个宝石的重量为wi&#xff0c;请你帮沃德选择尽量多的宝石装进背包&#xff0c;请注意宝石的总重量不超过m。 输入描述 第一行输…

Django官网项目 二

官网地址&#xff1a;Writing your first Django app, part 2 | Django documentation | Django 创建模组&#xff1a; 注册model &#xff08;bug&#xff1a;没有加后面的逗号&#xff09; 在manage.py 的目录下&#xff1a; python manage.py makemigrations polls pyth…

redis09 集群(cluster)

思维草图 为什么要使用集群 单台redis内存容量的限制单台redis并发写量太大有性能瓶颈 redis集群认识 redis集群是对redis的水平扩容&#xff0c;即启动N个redis节点&#xff0c;将整个数据分布存储在这个N个节点中&#xff0c;每个节点存储总数据的1/N。 如下图&#xff1…

C++ 根据公式计算椭圆任意点到中心的距离

#include <iostream> using namespace std;double fact(int x) //定义阶乘函数。注意是double类型 {double y x; //注意是double类型for (int i x-1; i > 0; i--)y * i;return y; };double My_sin(int x) //定义sin函数。注意是double类型 {double y 0; //注意是do…

【视频图像取证篇】Amped FIVE专业法医图像和视频增强软件之模糊图像去隔行功能

【视频图像取证篇】Amped FIVE专业法医图像和视频增强软件之模糊图像去隔行功能 法医图像和视频增强软件&#xff0c;专业又强大&#xff01;&#xff01;&#xff01;超过 140 种过滤器和工具&#xff0c;用于分析、恢复和增强数字图像和视频。Amped FIVE能够稳定抖动的视频&…

Linux:ansible-playbook配置文件(剧本)(进阶)

Linux&#xff1a;ansible-playbook配置文件&#xff08;剧本&#xff09;_ansible-playbook -i参数-CSDN博客https://blog.csdn.net/w14768855/article/details/132579492?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170930036016800215061982%2522%252C%2522s…

LaTeX排版论文的常见问题汇总(持续更新中)

文章目录 LaTeX排版论文的常见问题汇总&#xff08;持续更新中&#xff09;1.如何上传期刊或会议提供的LaTeX模板&#xff1f;2.模板中各文件的说明3.LaTeX中如何设置字体大小&#xff1f;3.1如何设置表格中的字体大小&#xff1f;3.2如何设置表格、图片标题的字体大小&#xf…

A/D转换

硬件电路模型 模数转换代码 main.c #include <REGX52.H> #include "LCD1602.h" #include "Delay.h" #include "XPT2046.h"unsigned int ADValue; int main(){LCD_Init();LCD_ShowString(1,1,"ADJ NTC RG");while(1){ADValue …

什么是Vue的服务端渲染(SSR)?它有什么作用?

Vue的服务端渲染&#xff08;SSR&#xff09;是指将Vue组件在服务器端进行渲染&#xff0c;然后将已经渲染好的页面返回给浏览器&#xff0c;相比于传统的客户端渲染&#xff0c;SSR可以更好地优化SEO和加速首屏加载速度。在传统的客户端渲染中&#xff0c;浏览器需要加载所有的…