UDP Multicast试验

最近试着给DTPLink网络通讯层加上UDP Multicast(IP组播)来实现类似uPNP的SSDP和Bonjour的mDNS功能。Multicast本是用来实现网络上属于同一组播组的主机间通讯,可以实现局域网内和因特网上的组播通讯。网上示例代码很多,但我的试验基本没有成功过。在试验过程中发现TP-Link低端家用路由器并不支持组播报文的转播,所以跨因特网的组播基本上是无法验证的。在Amzon EC2的Instance间也尝试了一把,最后发现Amzon EC2的官方文档中也指明了不支持组播。还尝试了局域网内的组播,理论上局域网内的组播是不需要到路由器上转发的,遗憾的是不论怎么尝试都没有成功。。。。百思不得其解。最后我试着用uPNP的"239.255.255.255:1900"地址试了一把,发现能够从开启upnp功能的路由器上得到SSDP协议的信息,同时侦听在该地址上的两个无线设备(一台笔记本+一台Android手机)间能够实现组播通讯,但是并不稳定,接收端有时收不到报文,从这个结果来看,家庭网络内部如果要用上组播技术,要么需要一个功能更高级的路由器(更多钱),要么尝试用uPNP。Multicast(组播或多播)虽然较Broadcast(广播)有技术上的优势,但还是增加网络通讯负担,所以即使家用路由器支持组播转发,在ISP那端也很有可能把组播转发功能给关了。因此组播在实际应用中还是些限制。本次试验的代码来自这里

注意,Android系统为了省电,默认情况是关闭组播通讯的,用multicastsocket编程时要事先通过Wifimanager得到MulticastLock方可操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值