1

I am trying to discover my app on a network. So I choose multicast technology. But it's inconsistent in Android.

Permission

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />

Lock multicast filter

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
mcastLock = wifiManager.createMulticastLock("SHAREALL_M_LOCK");
mcastLock.acquire();

Sending multicast

MulticastSocket socket = new MulticastSocket();
socket.joinGroup(InetAddress.getByName("224.0.0.5"));
DatagramPacket packet = new DatagramPacket(msg, msg.length, InetAddress.getByName("224.0.0.5"), 8092);
socket.send(packet);

Receiving multicast

MulticastSocket socket = new MulticastSocket(8092);
socket.joinGroup(InetAddress.getByName("224.0.0.5"));
DatagramPacket packet = new DatagramPacket(data,data.length);
socket.receive(packet);

I have tested these code in Samsung Gallaxy SII and Moto G.

Insane Skull
  • 9,220
  • 9
  • 44
  • 63
shantanu
  • 2,408
  • 2
  • 26
  • 56
  • 2
    This is a *statement*: "Multicast is inconsistent in Android." There's nothing to *answer* there. If you have a *question*, please try to make that clear and you may find some help. – Jon Surrell Jan 27 '16 at 21:48
  • Agree that you should ask a question. However, I can comment that multicast sending is simply not available on some android devices. Specifically, I have found that multicast sockets do not work on some Motorola droids. The same exact code works fine on other devices. – jaybers Feb 17 '16 at 02:42

0 Answers0