Как выбрать сеть в 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 шт):
Проблема возникает из-за того, что Microsoft присваивает метрики интерфейса на основе собственной скорости соединения, сообщаемой драйвером в Windows 7. Поскольку это всего 1 ГБ, возникает конфликт метрик. Вот решение, которое мне помогло:
- Откройте Центр управления сетями и общим доступом
- Нажмите «Изменить настройки адаптера»
- Щелкните правой кнопкой мыши « Сеть только для хоста VirtualBox », перейдите в «Свойства».
- На странице "Свойства" нажмите "Дополнительно..."
- На вкладке "Дополнительные параметры TCP/IP" на вкладке "Параметры IP" снимите флажок "Автоматическая метка" и введите от 800 и выше.