From c8532775e52c81a2738f8f239e9240d127ae7eb4 Mon Sep 17 00:00:00 2001 From: ed Date: Mon, 10 Feb 2020 16:42:10 +0000 Subject: [PATCH] Send broadcast message to all local addresses in NetworkServiceDiscovery::Advertiser::sendBroadcast() --- .../juce_NetworkServiceDiscovery.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/modules/juce_events/interprocess/juce_NetworkServiceDiscovery.cpp b/modules/juce_events/interprocess/juce_NetworkServiceDiscovery.cpp index f2ddcc5c4a..efa0b1a6fd 100644 --- a/modules/juce_events/interprocess/juce_NetworkServiceDiscovery.cpp +++ b/modules/juce_events/interprocess/juce_NetworkServiceDiscovery.cpp @@ -67,11 +67,20 @@ void NetworkServiceDiscovery::Advertiser::run() void NetworkServiceDiscovery::Advertiser::sendBroadcast() { - auto localAddress = IPAddress::getLocalAddress(); - message.setAttribute ("address", localAddress.toString()); - auto broadcastAddress = IPAddress::getInterfaceBroadcastAddress (localAddress); - auto data = message.toString (XmlElement::TextFormat().singleLine().withoutHeader()); - socket.write (broadcastAddress.toString(), broadcastPort, data.toRawUTF8(), (int) data.getNumBytesAsUTF8()); + static IPAddress local = IPAddress::local(); + + for (auto& address : IPAddress::getAllAddresses()) + { + if (address == local) + continue; + + message.setAttribute ("address", address.toString()); + + auto broadcastAddress = IPAddress::getInterfaceBroadcastAddress (address); + auto data = message.toString (XmlElement::TextFormat().singleLine().withoutHeader()); + + socket.write (broadcastAddress.toString(), broadcastPort, data.toRawUTF8(), (int) data.getNumBytesAsUTF8()); + } } //==============================================================================