Currently, due to , we use a MulticastSocket to receive multicast packets, but a DatagramSocket to send multicast packets (and send and receive unicast packets).
The reason was that we needed to get the IP address and port of the sender of a message. Due to a programming error, this was not the case earlier.
Now, I changed the code to use a MulticastSocket instead of a DatagramSocket to send multicasts (and send/receive unicasts).
Works perfectly and performance (4 nodes) is about the same.
In addition, we can now call MulticastSocket.setTimeToLive(), even on Windows, preventing the exception trying to set ip_ttl on Windows (java.net.DualStackPlainDatagramSocketImpl.setTimeToLive()).