android中udp协议广播的实现

这是本人在实现upd局域网广播遇到的问题总结帖.(是广播不是组播)

以下几个问题可能导致无法接受到广播

1. 有些厂家的手机rom默认是关闭了接受局域网广播这个功能的,所以我们需要一个MulticastLock这个类来开启接受广播的功能;

这个MulticastLock是WifiManager的内部类,我们需要一个WifiManager实例才能获得一个MulticastLock实例.

开启广播功能的方法MulticastLock.acquire();

//在这两个方法中接受包就可以了DatagramSocket.receives();

当我们接受完包后必须关闭这个功能multicastLock.release();

这个功能涉及到wifi权限,我顺便把联网的权限贴出来

联网权限


wifi控制权限


2.这个问题是udp协议缺点产生的,udp协议在发送广播它只负责发送,并不管你是否接受成功.所以当我们在发送广播时务必多发送几个,也就是循环发送!!!本人就是掉在这个坑中爬了好久


本人就不贴代码了,如果需要代码的留言留下邮箱说明下,我有空会发过去.

你可能感兴趣的:(android)