按照网络搜索,很简单的,发送端尤其如此,设个组播地址,发送数据就好;接收端嘛,一样的设socket,绑定,然后加入组播,接收就好了。

可是!多数例程都不告诉我,需要在路由表添加组播地址。于是,我先实现有线连接的两个机子之间的组播,由于本来用的libuv函数,资料太少,我先搞了个基于linux socket的程序,发送端说地址不可达,接收端说没有这个设备。。。o(╥﹏╥)o 搜索这些错误信息许久,才看到说添加路由表的事情,然后初级程序搞定,然后移到libuv实现,搞定。再然后,实现有线+ap+sta的组播:有线主机连接ap,发组播,sta接收。

总结下,需要这么做:

(1)所有的机子,都要添加路由表:

route add -net 224.0.1.100 netmask 255.255.255.255 eth0

route add -net 224.0.1.100 netmask 255.255.255.255 br-lan

route add -net 224.0.1.100 netmask 255.255.255.255 wlan0

地址是组播地址,后面跟的网络名是对应的组播要经过的网卡名称,根据程序修改。

(2)openwrt的机子都需要开igmpproxy

(3)然后可以搜索网络,找例程,改改加入机子就好了。

我知道openwrt的网站说要搞防火墙,配置igmproxy.conf什么的,可这里我只是在ap和sta添加了路由表,其他似乎都是默认,sta端的程序就能收到数据了。也许是因为这是内网组播?

有了问题再修改吧。另外,非常感谢有那么多牛人在网上给出信息,让我们有的学习。libuv ,还有其他的组播例程都可以搜到。

 

 

Logo

更多推荐