Android-телефон фильтрует многоадресную рассылку

Среда:

Телефон: Motorola Xoom, модель MZ601, Android 3.0.1
Маршрутизатор: Netgear WNR3500U/WNR3500L

Проблема:

На Android есть простой слушатель многоадресной рассылки Java:

    public void listenMulticast(){
    try{
        WifiManager wifi = (WifiManager)App.getContext().getSystemService( Context.WIFI_SERVICE );

        /*****Get multicast lock*****/
        MulticastLock multicastLock = wifi.createMulticastLock("MyApp");
        multicastLock.setReferenceCounted(true);
        multicastLock.acquire();

        /*****Create a socket*****/
        MulticastSocket socket = new MulticastSocket(PORT);
        socket.joinGroup(InetAddress.getByName(HOST));

        /*****Receive a message*****/
        byte[] buf = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buf, buf.length);
        socket.setSoTimeout(TIME_OUT);
        socket.receive(packet);
        ...
    } catch()

}

Приложение получает многоадресную рассылку в локальном диапазоне (пробовал с группой 224.0.0.250 и портом 6791), но не видит (исключение времени ожидания в методе socket.receive()) многоадресную рассылку в общедоступном диапазоне: 228.5.6.7 (и тот же порт 6791 например).

Разрешения безопасности являются стандартными:

<uses-sdk android:minSdkVersion="4"  android:targetSdkVersion="8"></uses-sdk>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"></uses-permission>

Я пытался с разными телефонами Android в той же сети, и они получили многоадресную рассылку в группе 228.5.6.7. Но этот Motorola Xoom принимает только локальную многоадресную рассылку.

Спасибо за некоторые идеи, что может быть не так.

0 ответов

Другие вопросы по тегам