Как выбрать сеть в java программе осуществляющей обмен по udp в режиме Multicast

Приложение на Java осуществляет передачу данных по протоколу UDP в режиме Multicast с другим компьютером. На этой же машине установлен VirtualBox.

Вот код отправки данных:

private final static String IP_ADDR = "224.1.1.201";
DatagramSocket socket;
public void sending() {
    socket = new DatagramSocket();
    group = InetAddress.getByName(IP_ADDR);
    sendingDataBuffer = parserData(dataBuffer);
    DatagramPacket packet 
    = new DatagramPacket(sendingDataBuffer, sendingDataBuffer.length, group, SERVICE_PORT);
    socket.send(packet);
}

Проблема оказалась в том, что программа отправляла пакеты в сеть virtualBox, поэтому я их не мог ни получить на приемной стороне, ни увидеть в Wireshark. Как мне в Java коде указать в какую сеть оправлять пакеты? Если отключаю сетевое соединение virtualBox, то пакеты начинают отправляться через стандартное сетевое соединение на другой компьютер. Почему мое приложение отправляет данные именно в эту сеть?


Ответы (1 шт):

Автор решения: alexmntmnk

Проблема возникает из-за того, что Microsoft присваивает метрики интерфейса на основе собственной скорости соединения, сообщаемой драйвером в Windows 7. Поскольку это всего 1 ГБ, возникает конфликт метрик. Вот решение, которое мне помогло:

  1. Откройте Центр управления сетями и общим доступом
    • Нажмите «Изменить настройки адаптера»
    • Щелкните правой кнопкой мыши « Сеть только для хоста VirtualBox », перейдите в «Свойства».
  2. На странице "Свойства" нажмите "Дополнительно..."
  3. На вкладке "Дополнительные параметры TCP/IP" на вкладке "Параметры IP" снимите флажок "Автоматическая метка" и введите от 800 и выше.
→ Ссылка