【问题标题】:iOS - Multicast networking failed : "Can't assign requested address"iOS - 多播网络失败:“无法分配请求的地址”
【发布时间】:2021-02-28 17:18:16
【问题描述】:

我仔细跟踪Apple instructions

    guard let multicast = try? NWMulticastGroup(for:[ .hostPort(host: "224.0.0.251", port: 5353) ]) else { NSLog("ERROR"); return }
    
    let group = NWConnectionGroup(with: multicast, using: .udp)
    group.setReceiveHandler(maximumMessageSize: 16384, rejectOversizedMessages: true) { (message, content, isComplete) in
        NSLog("Received message from \(String(describing: message.remoteEndpoint))")
    }
    group.start(queue: .main)

但是,当我运行此代码时,出现以下错误:

[49: 无法分配请求的地址]

平台是iOS 14.2,如果我在真实设备上或通过模拟器运行程序,问题仍然存在。

我拥有 com.apple.developer.networking.multicast 权利,并且配置正确。

我尝试了各种 IP 地址(IPV4 和 IPV6)和各种端口,但没有任何结果。

【问题讨论】:

  • 你有没有得到这个结果?

标签: ios swift networking multicast


【解决方案1】:

我已联系 Apple DTS(开发者技术支持),提出与您完全相同的问题。

在与技术人员一起调查后,我们能够得出结论,即使我们收到此错误消息以及其他两个错误消息,多播仍然有效。更具体地说,这些是我们都得到的三个确切错误:

MulticastTest[49964:2029188] [] nw_listener_socket_inbox_create_socket setsockopt SO_NECP_LISTENUUID failed [2: No such file or directory]
MulticastTest[49964:2029188] [] nw_listener_socket_inbox_create_socket IP_DROP_MEMBERSHIP 224.0.0.1:28650 failed [49: Can't assign requested address]
     [NWConnectionGroup][state] group entered state waiting(POSIXErrorCode: Network is down)

对我来说,我的原始项目无法运行的原因是,即使其他所有内容都已正确配置,.entitlement 文件也从未包含在 XCode 的构建设置中。在此处找到的有关如何正确设置多播权利的说明中从未提及这一点:https://developer.apple.com/forums/thread/663271

您可以在这里找到我的和技术人员正在工作的 udp 多播项目:https://github.com/richardwei6/Swift-Native-UDP-Multicast-Testing

这确实回答了您的问题,但可能无法完全解决您的问题。不过还是值得一看的。

希望这有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-26
    • 2020-10-30
    • 1970-01-01
    • 2022-01-16
    • 2016-10-31
    • 2017-04-13
    • 1970-01-01
    相关资源
    最近更新 更多