android multicast 多播(组播)问题
有谁遇到过同样问题的可以探讨下,或者已经解决问题的,能够指导下我
获取组播锁
private InetAddress group;
WifiManager wm=(WifiManager)getSystemService(Context.WIFI_SERVICE);
MulticastLock mlock=wm.createMulticastLock("mygroup");
mlock.acquire();
group =InetAddress.getName("239.255.255.250"); //创建多播组
不能在UI thread 上直接发送和接收组播,开辟一个子线程
new Thread(){
public void run(){
StringBuffer sb=new StringBuffer();
sb.append("data"); //发送组播的内容
byte[] sendata=sb.getBytes();
mlock.setLoopbackMode(true); //设置模式 Loopbackmode 不是很清楚 根据意思应该是 周期性的发送消息 这个要看具体的抓包什么情况
mlock.joinGroup(group);
//设置时间任务每隔3秒发送一次组播
Timer timer=new Timer();
timer.schedule(new MyTimerTask(),3000);
while(true){
DatagramPacket temppacket=new new DatagramPacket(bs, bs.length, group,prot);
mlock.recive(temp);
String packetIpAddress = new String(temp.getData(), 0, temp.getLength()).trim();
if(){ //过滤出想要获取的信息
}else{
Thread.sleep(2000); //休眠两秒再接收组播
}
}
}
}.start();
//时间任务
class MyTimerTask extends TimerTask{
byte[] bs = new byte[1024];
@Override
public void run() {
// TODO Auto-generated method stub
DatagramPacket packet = new DatagramPacket(sendData,sendData.length, group, Integer.valueOf(pro.getProperty("multicast_port")));
try {
multicastsocket.send(packet);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
接收和发送放在同一个线程里循环执行
使用 htc 4.01 和sony 4.2.2的可以接收到组播 但是lg nexus 4.3 和nexus 4.4 都接收不到组播!表示很不解呀
难道版本越高 反而不支持组播还是需要在手机上做什么设置?
android multicast 多播(组播)问题的更多相关文章
- Android上UDP组播无法接收数据的问题
最近,想做一个跨平台的局域网的文件传输软件,思路是组播设备信息,TCP连接传输文件.于是进行了一次简单的UDP组播测试,发现Android对于UDP组播接收数据的支持即极为有限. 部分代码如下 pac ...
- IP多播(组播)
IP多播是实现数据一对多通信的模式.从一个源点传送到多个目的地,数据仅仅拷贝一份.这里说的数据仅仅拷贝一份,是指在每一条须要它的两个点之间,数据仅仅有一份.例如以下图为<计算机网络>(谢希 ...
- Java单播、广播、多播(组播)---转
一.通信方式分类 在当前的网络通信中有三种通信模式:单播.广播和多播(组播),其中多播出现时间最晚,同时具备单播和广播的优点. 单播:单台主机与单台主机之间的通信 广播:当台主机与网络中的所有主机通信 ...
- Java单播、广播、多播(组播)
一.通信方式分类 在当前的网络通信中有三种通信模式:单播.广播和多播(组播),其中多播出现时间最晚,同时具备单播和广播的优点. 单播:单台主机与单台主机之间的通信 广播:当台主机与网络中的所有主机通信 ...
- Android开发:组播(多播)与广播
近期由于需要编写能够使同一局域网中的Android客户端与PC端进行自动匹配通信功能的程序,学习并试验了JAVA组播与广播的内容,记录一些理解如下: 一.组播(多播) 背景知识:组播使用UDP对一定范 ...
- 浅谈Android中的组播(多播)
组播使用UDP对一定范围内的地址发送相同的一组Packet,即一次可以向多个接受者发出信息,其与单播的主要区别是地址的形式.IP协议分配了一定范围的地址空间给多播(多播只能使用这个范围内的IP),IP ...
- 【miscellaneous】多播(组播)原理分析
为什么要使用多播: 网卡从网络上接收到目标物理地址对应的所有bit位都为1的数据报时,会收到这条消息并将其上传给驱动程序,网卡的这种工作模式称为广播模式,网卡的缺省工作模式包含直接模式和 ...
- Android MulticastSocket IP组播
MulticastSocket是对等的关系,也就是他们通过IP多点组播保留的地址来相互接收在这个组的Socket发送的消息 我写了一个例子,MultiSocketB是一个service,用于先接收再发 ...
- 组播(Multicast)传输
组播(Multicast)传输: 在发送者和每一接收者之间实现点对多点网络连接. 如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包.它提高了数据传送效率.减少了骨干网络出现拥 ...
随机推荐
- linux 命令之sar——监视系统状态
摘要:在进行系统或者内核测试的时候,我们经常需要观察cpu利用率,缓冲区使用情况,文件读写情况等等.在linux系统下,我们可以用sar命令来达到这个要求. sar 命令行的常用格式: sar [op ...
- Air Raid(最小路径覆盖)
Air Raid Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7511 Accepted: 4471 Descript ...
- 在MDK中怎样生成*.bin格式的文件?
在Realview MDK的集成开发环境中.默认情况下能够生成*.axf格式的调试文件和*.hex格式的可运行文件. 尽管这两个格式的文件很有利于ULINK2仿真器的下载和调试,可是ADS的用户更习惯 ...
- 【NGROK】快速实现本地Web服务到外网的映射
NGROK官网:https://ngrok.com NGROK百科:http://baike.baidu.com/view/13085941.htm?fr=aladdin 使用ngrok(Window ...
- iOS NSRuntime机制
什么是Objective-C runtime? 简单来说,Objective-C runtime是一个实现Objective-C语言的C库.对象可以用C语言中的结构体表示,而方法(methods)可以 ...
- N皇后( DFS,推荐)
N皇后问题 Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上. 你的任 ...
- Android面试题整理(1)
1.Activity的生命周期 onCreate(Bundle saveInstanceState):创建activity时调用. onStart():activity可见时调用 ...
- 【 D3.js 入门系列 — 2 】 绑定数据和选择元素
1. 如何绑定数据 D3 有一个很独特的功能:能将数据绑定到 DOM 上,也就是绑定到文档上.这么说可能不好理解,例如网页中有段落元素<p>,我们可以将整数 5 与 <p>绑定 ...
- Strange Country II 暴力dfs
这题点的个数(<=50)有限, 所以可以纯暴力DFS去搜索 //#pragma comment(linker, "/STACK:16777216") //for c++ Co ...
- Debian上安装TightVNC Server
from:www.penlug.org/twiki/bin/view/Main/TightVNC Using VNC The tool vncserver allows you to run ad ...