#flutter #udp #multicast #ios14
Вопрос:
Здесь задаем вопросы и ответы в стиле Jeopardy.
Я разрабатываю приложение на Flutter, которое использует пакет 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
Ответ №1:
Начиная с iOS 14, вашему приложению требуется разрешение на многоадресную сеть com.apple.developer.networking.multicast
, чтобы иметь возможность отправлять или получать многоадресный трафик IP.
Чтобы получить право, вам необходимо подать заявку, используя форму запроса Apple. Мне потребовалось 4-5 дней, прежде чем я получил одобрение запроса.
Затем вы можете следовать инструкциям на форумах Apple, чтобы начать и запустить.