I would like to be able to receive broadcast datagrams.  I am using
the following code:

    public void Receive()
    {
        EnableMulticast();

        String text;
        byte[] message = new byte[1500];
        DatagramPacket p = new DatagramPacket(message,
message.length);
        try {
            DatagramSocket s = new DatagramSocket(45454);
            s.receive(p);
            text = new String(message, 0, p.getLength());
            Log.d("GabySoft", "message:" + text);
            s.close();
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

Now if I send a datagram to the ip address of this device, it receives
the message.  However, if I send a broadcast datagram, I do not get
it.

By doing web searches, I found that it appears that most phones have
the ability to receive broadcast datagrams turned off to conserve
power.  I found the following code which supposedly turns that ability
back on, and I am calling it at the beginning of the 'Receive'
function:

    private void EnableMulticast()
    {
        if (lock == null)
        {
            try
            {
                android.net.wifi.WifiManager wifi =
                    (android.net.wifi.WifiManager)
 
getSystemService(android.content.Context.WIFI_SERVICE);
                 lock = wifi.createMulticastLock("HeeereDnssdLock");
                 lock.setReferenceCounted(true);
                 lock.acquire();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }

However, even after calling this function (which succeeds), I still do
not receive broadcast datagrams.

Can anyone tell me how to make this work?

Thanks.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to