iOS - 组播网络失败:"Can't assign requested address"



我认真地遵循了苹果的说明。

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(和各种端口,但没有任何结果。

我已经联系了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

这确实回答了您的问题,但可能无法完全解决您的问题。然而,它值得一看。

希望这能有所帮助!

相关内容

最新更新