iOS 14 在进行本地网络广播时给出“操作系统错误:错误的文件描述符,errno = 9”

2024-04-14

做一点Jeopardy 风格问答 https://stackoverflow.blog/2011/07/01/its-ok-to-ask-and-answer-your-own-questions/ here.

我正在 Flutter 中开发一个应用程序,它使用UDP包 https://pub.dev/packages/udp用于在本地网络上广播。这在 Android、Windows、macOS 和 iOS 上运行良好,直到我在 iOS 14.6 设备上尝试。

代码流程主要是这样的:

var endPoint = Endpoint.broadcast(port: Port(6000));
var udpFuture = UDP.bind(Endpoint.any(port: Port(6000)));
udpFuture.then((udp) {
   udp.listen((datagram) {
       handleMessage(datagram.data);
   });
   udp.send(bytesToSend, endPoint);
}

我收到的错误消息是这样的:Unhandled Exception: OS Error: Bad file descriptor, errno = 9


从 iOS 14 开始,您的应用程序需要多播网络权利com.apple.developer.networking.multicast https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_networking_multicast能够发送或接收 IP 多播流量。

要获得您需要的权利使用 Apple 的申请表进行申请 https://developer.apple.com/contact/request/networking-multicast。我花了 4-5 天的时间才获得批准。

然后你就可以关注Apple 论坛上的说明 https://developer.apple.com/forums/thread/663271启动并运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 14 在进行本地网络广播时给出“操作系统错误:错误的文件描述符,errno = 9” 的相关文章

随机推荐