Отправка и получение многоадресных пакетов через Wi-Fi с активным подключением для передачи данных 4G

Я знаю, что новейшие версии Android позволяют автоматически отключать подключение для передачи данных через 4G, когда сеть Wi-Fi не обеспечивает подключение к Интернету.

Я хотел бы использовать это поведение в следующем сценарии:

  1. Смартфон Android 8 подключен к Wi-Fi-соединению, которое не подключено к Интернету.

  2. Смартфон подключен к Интернету с помощью подключения для передачи данных 4G.

Я хочу, чтобы мое приложение отправляло и получало многоадресные пакеты по сети Wi-Fi. Я пробовал следующее:

    MulticastSocket clientSocket = new MulticastSocket(1900);
    clientSocket.setInterface(getFirstWiFiAddress()); // here I set the InetAddress of the Wifi card
    clientSocket.joinGroup(InetAddress.getByName("239.255.255.250"));
    clientSocket.send(sendPacket);
    byte[] receiveData = new byte[1024];
    DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
    clientSocket.receive(receivePacket); // <--- Timeout Error (Only happens if 4G is enabled)

Я не могу понять, почему эта ошибка возникает только при включенном 4G. Как я могу преодолеть эту проблему?

В основном мне нужно активировать камеру Wi-Fi (у нее есть собственная сеть Wi-Fi, в которой она транслирует пакеты SSDP) при подключении к Интернету.


person xanz    schedule 06.12.2018    source источник
comment
Ты уверен, что сможешь? Многие интернет-провайдеры фильтруют многоадресную рассылку. Я не удивлюсь, если ваш оператор беспроводной связи сделал это. На самом деле я бы больше удивился, если бы они этого не сделали.   -  person Gabe Sechan    schedule 06.12.2018
comment
Мне нужно мультикаст только через Wi-Fi. Почему активное соединение 4G не позволяет мне выполнять многоадресную рассылку через интерфейс WiFi? Что я делаю не так? Если я отключу подключение к данным 4G, все будет работать нормально.   -  person xanz    schedule 06.12.2018
comment
Вы можете увеличить время ожидания сокета или перехватить исключение и повторить попытку, если это применимо.   -  person Onik    schedule 07.12.2018