Dart - 发送 UDP 广播
Dart - Send an UDP broadcast
我正在寻求帮助,因为我似乎找不到使用 Dart 在本地网络内发送 UDP 广播的方法。
到目前为止,我设法使用 UDP 与 RawDatagramSocket
进行通信。我可以向特定地址发送消息。
我无法做的是向本地网络内的任何设备发送广播(网络掩码为 255.255.255.0),并等待可能的(多个)答案。这是我正在使用的代码:
RawDatagramSocket.bind('127.0.0.1', 8889)
.then((RawDatagramSocket udpSocket) {
udpSocket.listen((e) {
Datagram dg = udpSocket.receive();
if (dg != null) {
//stuff
}
});
udpSocket.send(utf8.encode('TEST'), DESTINATION_ADDRESS, 8889);
});
我试图用 InternetAddress.anyIPv4
替换 DESTINATION_ADDRESS
,但我没有成功。我还在 RawDatagramSocket
中找到了 属性 broadcastEnabled
,但我找不到有关如何使用它的更多信息。
在此先感谢您的帮助。
有两个问题:
在所有网络接口上使用InternetAddress.anyIPv4
绑定;
启用广播权限 属性 broadcastEnabled
显然使用广播地址:对于 /24
网络使用 x.y.z.255
地址。
这段代码有效:
import 'dart:io';
import 'dart:convert';
main() {
var DESTINATION_ADDRESS=InternetAddress("x.y.z.255");
RawDatagramSocket.bind(InternetAddress.anyIPv4, 8889).then((RawDatagramSocket udpSocket) {
udpSocket.broadcastEnabled = true;
udpSocket.listen((e) {
Datagram dg = udpSocket.receive();
if (dg != null) {
print("received ${dg.data}");
}
});
List<int> data =utf8.encode('TEST');
udpSocket.send(data, DESTINATION_ADDRESS, 8889);
});
}
socket.send(
'HELLO!'.codeUnits,
InternetAddress('255.255.255.255'),
8080,
);
尝试使用 LAN 而不是 WLAN。
我正在寻求帮助,因为我似乎找不到使用 Dart 在本地网络内发送 UDP 广播的方法。
到目前为止,我设法使用 UDP 与 RawDatagramSocket
进行通信。我可以向特定地址发送消息。
我无法做的是向本地网络内的任何设备发送广播(网络掩码为 255.255.255.0),并等待可能的(多个)答案。这是我正在使用的代码:
RawDatagramSocket.bind('127.0.0.1', 8889)
.then((RawDatagramSocket udpSocket) {
udpSocket.listen((e) {
Datagram dg = udpSocket.receive();
if (dg != null) {
//stuff
}
});
udpSocket.send(utf8.encode('TEST'), DESTINATION_ADDRESS, 8889);
});
我试图用 InternetAddress.anyIPv4
替换 DESTINATION_ADDRESS
,但我没有成功。我还在 RawDatagramSocket
中找到了 属性 broadcastEnabled
,但我找不到有关如何使用它的更多信息。
在此先感谢您的帮助。
有两个问题:
在所有网络接口上使用
InternetAddress.anyIPv4
绑定;启用广播权限 属性
broadcastEnabled
显然使用广播地址:对于 /24
网络使用 x.y.z.255
地址。
这段代码有效:
import 'dart:io';
import 'dart:convert';
main() {
var DESTINATION_ADDRESS=InternetAddress("x.y.z.255");
RawDatagramSocket.bind(InternetAddress.anyIPv4, 8889).then((RawDatagramSocket udpSocket) {
udpSocket.broadcastEnabled = true;
udpSocket.listen((e) {
Datagram dg = udpSocket.receive();
if (dg != null) {
print("received ${dg.data}");
}
});
List<int> data =utf8.encode('TEST');
udpSocket.send(data, DESTINATION_ADDRESS, 8889);
});
}
socket.send(
'HELLO!'.codeUnits,
InternetAddress('255.255.255.255'),
8080,
);
尝试使用 LAN 而不是 WLAN。