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++伪代码:

cpp 复制代码
 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

相关推荐
mit6.8242 小时前
[FSCalendar] 可定制的iOS日历组件 | docs | Interface Builder
ios
2501_915921432 小时前
iOS 应用加固与苹果软件混淆全解析 IPA 文件防反编译、混淆加密与无源码加固策略
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_929382654 小时前
王国保卫战全集下载 1~5部全系列MOD DLC修版 安卓+ios+PC电脑版
游戏·ios·智能手机·iphone·玩游戏·单机游戏·安卓游戏
2501_916007475 小时前
iOS 代上架实战指南,从账号管理到使用 开心上架 上传IPA的完整流程
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_915918416 小时前
iOS混淆与IPA文件加固深度解析,从反编译风险到苹果应用安全工程实践
android·macos·ios·小程序·uni-app·cocoa·iphone
萤虫之光14 小时前
【iOS】PrivacyInfo.xcprivacy隐私清单文件(二)
ios
巴博尔16 小时前
uniapp的IOS中首次进入,无网络问题
前端·javascript·ios·uni-app
Digitally17 小时前
如何从 iPhone 中导出视频
ios·iphone
_阿南_1 天前
flutter在Xcode26打包的iOS26上全屏支持右滑的问题
flutter·ios·xcode
2501_916007471 天前
iOS 26 软件性能测试 新版系统下评估全流程 + 多工具辅助方案
android·macos·ios·小程序·uni-app·cocoa·iphone