【发布时间】:2022-11-09 06:38:42
【问题描述】:
通过这个设置,我已经能够让两部安卓手机发送和接收 UDP 广播。我还可以使用此设置将 UDP 广播从物理 Android 设备发送到 iPhone。
但是,我的问题是它似乎并没有反过来工作。发送函数在 iPhone 上运行,接收函数在 Android 手机上运行。 Android 手机永远不会收到广播。 iPhone的发送功能似乎有问题。这是设置:
以前为我工作的 Android 方面:
const port = 37069;
const address = '224.0.0.1';
void receive() async {
final socket = await RawDatagramSocket.bind(address, port);
socket.multicastHops = 1;
socket.broadcastEnabled = true;
socket.writeEventsEnabled = true;
socket.listen((RawSocketEvent event) {
print("still listening...");
final packet = socket.receive();
print("The packet was $packet");
print("It came from ${packet?.address}");
});
}
这是iPhone方面,这似乎是问题所在。我没有收到错误,所以我想知道Info.plist 文件中是否有需要添加的权限?
void broadcast() {
// for the iphone
RawDatagramSocket.bind(address, port).then((RawDatagramSocket socket) {
socket.multicastLoopback = false;
socket.broadcastEnabled = true;
socket.readEventsEnabled = true;
for (int i = 0; i < 150; i++) {
socket.send("Sent #$i".codeUnits, InternetAddress(address), port);
print("sent $i");
}
socket.close();
});
}
我在我的项目中测试了相同的设置,它在以下情况下有效:
- 安卓->安卓
- 安卓 -> iOS
但是,iOS -> Android 不起作用。当我运行应用程序时,我可以看到 iPhone 确实在发送数据,但 Android 没有收到任何数据。是安卓端的问题吗?我究竟做错了什么?
【问题讨论】:
标签: android ios flutter udp multicast