android multicast(组播)发送端和接收端源代码,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上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)传输: 在发送者和每一接收者之间实现点对多点网络连接. 如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包.它提高了数据传送效率.减少了骨干网络出现拥 ...

随机推荐

.net学习笔记----HttpRequest,WebRequest,HttpWebRequest区别

WebRequest是一个虚类/基类,HttpWebRequest是WebRequest的具体实现 HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所 ...

使用Python 将shapefile导入mongodb

使用Python 将shapefile导入mongodb 随着big data时代的到来,各个行业都在考虑能不能把big data的思路.方法引入进来,GIS行业也不能免俗. 下面就介绍一下如何将sh ...

install docker on xubuntu

ref: https://docs.docker.com/engine/installation/linux/ubuntulinux/#/install-the-latest-version ps: ...

SSH基本框架搭建后的简化

对于SSh框架的简化,我们可以从下面几个方面来剖析: 1.实体类entity:在这里我们需要将数据库和实体类进行关联,在简化之前,我们需要在entity包里面加入一份.xml配置文件 例如原码---- ...

[转载]C#设置开机启动

原理就是在注册表启动项里添加一项.路径:SOFTWARE\Microsoft\Windows\CurrentVersion\Run或者直接:运行->regedit找到这个路径添加一项. usin ...

JavaScript高级程序设计5.pdf

队列方法访问规则是FIFO(First-In-First-Out,先进先出),数组方法shift()能够移除数组中第一个项并返回该项,同时将数组长度减1,结合使用shift()和push(),可以像队 ...

【2】开发环境的搭建,Ubuntu14.04

这里使用的是Ubuntu14.04 Unity 更新源 首先,将更新源更换为国内更新源,我这里使用的是网易的更新源 sudo gedit /etc/apt/sources.list deb http: ...

zTree实现更新根节点中第i个节点的名称

zTree实现更新根节点中第i个节点的名称 1.实现源码

zTree实现基本树 ...

js数组string对象api常用方法

charAt() 方法可返回指定位置的字符. stringObject.charAt(index) indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. stringObject ...

python3字符串

Python3 字符串 Python字符串运算符 + 字符串连接 a + b 输出结果: HelloPython * 重复输出字符串 a*2 输出结果:HelloHello [] 通过索引获取字符串中 ...

你可能感兴趣的:(android)