ios App 发送广播失败解决

news/2024/7/20 20:15:14 标签: ios

记录开发 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.niftyadmin.cn/n/5415207.html

相关文章

「解析文件流,Java之FileOutputStream助您轻松操作文件!」

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

sql注入攻击 - 宽字节注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、宽字节概念 单字节字符集:所有字符使用一个字节表示,比如 ASCII 编码范围为 0-127。多字节字符集:部分字符用多个字节表示,另一部分可能使用单个字节表示。宽字节注入利用…

【linux驱动开发】IO模型之同步IO、异步IO、IO多路复用

文章目录 IO的概述IO模型的实现阻塞IO非阻塞IOIO多路复用信号驱动异步IO 编译与测试说明 IO的概述 io&#xff0c;英文名称为inoput与output&#xff0c;表示输入与输出。 在冯诺依曼结构计算机中&#xff0c;计算机由 运算器、控制器、存储器、输入、输出五部分组成&#xf…

配置DDoS高防后获取真实的请求来源IP

业务接入DDoS高防后&#xff0c;到达源站的所有业务流量都由DDoS高防转发&#xff0c;源站服务器通常可以通过解析回源请求中的X-Forwarded-For记录或者安装TOA模块&#xff0c;获取客户端的真实IP。本文九河云介绍如何获取真实的请求来源IP。 配置端口接入的业务&#xff08;…

css使用

文章目录 一、什么是CSS二、CSS导入方式三、CSS选择器四、CSS属性 一、什么是CSS <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>div{color: red;}</style> &…

ubuntu追加path环境变量

要在 bash shell 中追加 PATH 环境变量&#xff0c;你可以编辑用户的 .bashrc 文件&#xff08;对单个用户生效&#xff09;或者 .bash_profile 文件&#xff08;在某些系统上&#xff09;&#xff0c;或是系统级的配置文件&#xff08;例如 /etc/profile 或 /etc/environment&…

C++指针(四)万字图文详解!

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 前言 相关文章&#xff1a;C指针&#xff08;一&#xff09;、C指针&#xff08;二&#xff09;、C指针&#xff08;三&#xff09; 本篇博客是介绍函数指针、函数指针数组、回调函数、指针函数的。 点赞破六…

LeetCode | 搜索插入位置

Problem: 35. 搜索插入位置 文章目录 思路解题方法复杂度Code 思路 用python对列表特有的操作——index。 解题方法 见上 复杂度 时间复杂度: O(n) 空间复杂度: O(1) Code class Solution:def searchInsert(self, nums: List[int], target: int) -> int:try:return …