2

Environment:

Phone: Motorola Xoom, model MZ601, Android 3.0.1
Router: Netgear WNR3500U/WNR3500L

Problem:

There is a piece of simple Java multicast listener on Android:

    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()

}

The application receives multicast in a local range (tried with a group 224.0.0.250 and port 6791) but does not see (timeout exception in socket.receive() method) multicast in a public range: 228.5.6.7 (and the same port 6791 for example).

Security permissions are standard:

<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>

I tried with different android phones in the same network and they received multicast on group 228.5.6.7. But this Motorola Xoom receives local multicast only.

Thank you for some ideas what possibly can be wrong.

0 Answers0