Я передаю UDP-запрос на прослушивание устройства, с которым я хочу связаться. Он работает нормально, но выполняется 2 раза, и я хочу завершить работу после получения ровно 1 правильного ответа от устройства
Здесь это функция, которую я использую:
static Future<Null> udpDiscovery() async {
try {
await RawDatagramSocket.bind(InternetAddress.anyIPv4, 8889)
.then((RawDatagramSocket udpSocket) {
udpSocket.broadcastEnabled = true;
udpSocket.send(utf8.encode(Resources.requestString),
InternetAddress("255.255.255.255"), 8139);
udpSocket.listen((e) async {
Datagram dg = udpSocket.receive();
if (dg != null) {
print("received ${dg.address.address}\n");
print('${utf8.decode(dg.data)}\n');
print('${dg.port}');
if (utf8.decode(dg.data) == Resources.responseString) {
int i = await performHandshake(dg.address.address);
if (i == 0) discovered = true;
udpSocket.close();
return;
}
udpSocket.close();
}
});
});
} on SocketException {
print('Socket Exception Received');
}
}