永发信息网

linux加入组播失败

答案:2  悬赏:20  手机版
解决时间 2021-04-05 02:22
struct ip_mreq mreq;
mreq.imr_multiaddr.s_addr = inet_addr("224.0.0.251");
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
int err = setsockopt(sock_fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq));
为什么err是小于0的,说明加入组播失败
错误是no such device
最佳答案
What does "IP_ADD_MEMBERSHIP: No such device" mean?
It means that the tool is trying to use multicast but the network interface doesn't support it There are two likely causes:
·Your machine doesn't have multicast support enabled. For example, on Linux and FreeBSD it is possible to compile a kernel which doesn't support multicast.
·You don't have a route for multicast traffic. Some systems don't add this by default, and you need to run:
route add -net 224.0.0.0 netmask 224.0.0.0 eth0(or similar). If you wish to use RAT in unicast mode only, it is possible to add the multicast route on the loopback interface.
我一般都这样写:
mreq.imr_interface.s_addr = htonl(localIP);
全部回答
这就要有pim(protocol independent multicast,协议无关组播组)协议的支持,就必须在linux环境下安装pimd软件协议包。 安装补丁文件 安装pimd软件协议包需要两个补丁文件:pimkern-freebsd-4.6.patch和netstat-freebsd-4.6.patch。安装步骤如下: 首先将两个补丁文件拷贝到/usr/src/目录下,并执行以下命令:#patch -p2 < netstat-freebsd-4.6.patch #patch -p2 < pimkern-freebsd-4.6.patch 执行以下命令,编译并安装netstat:#cd /usr/src/usr.bin/netstat #make #make install 重新编译内核 执行以下命令,修改multi配置文件:#cd /usr/src/sys/i386/conf/ #cp genric multi #vi multi 在multi配置文件中,加入下列两行代码:options mrouting options pim 保存并退出vi编辑器。 在当前multi配置文件所在的目录执行以下命令:#config multi #cd /usr/src/sys/compile/multi/ #make depend #make #make install 至此,新内核编译完毕。 备份kernel文件 新内核编译完毕后,在重新启动前,要先将根目录下原有的kernel文件进行备份。#cd / #mv kernel kernel.old 若提示“operation not permitted”,则需要先执行以下命令:#chflags noschg /kernel 备份kernel文件后执行以下命令:#cp /usr/src/sys/compile/multi/kernel /kernel 在系统重新启动后,默认选择的便是新编译的内核。 安装pimd软件协议包 linux下pimd软件协议包代码的起源有两个地方,一个是日本的kame项目组,另一个是南加州大学信息科学学院。到这两个组织的主页上都可以下载所需要的pimd-current.tar.gz 协议包和上面提到的两个补丁。 用以下命令解压缩 pimd-current.tar.gz 软件包,并安装:#tar zxf pimd-current.tar.gz #cd pimd-2.1.0-alpha29.16 #make #make install 以上命令执行过程中可能会出现错误,需要手工将其完成,拷贝当前目录下的pimd文件:#cp pimd /usr/local/bin/ #chmod 755 pimd #cp pimd.conf /etc/ 至此,pimd软件协议包安装完毕。还需要打开linux系统的路由转发功能,才能实现组播包的转发,即在配置文件rc.conf中增加以下代码,重启后生效。作者:龙宇翔 苑庆国
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
qq飞车怎么卡坐骑
等腰三角形底边中点与顶点的连线垂直于底边
甜品学徒都要从服务员作起吗
无尽之剑3烧焦的地图奖励在哪里求大神
单选题有位学者把17世纪40年代明朝崇祯帝和英
求手抄报草图
2011年的长城H5款3万值得吗?跑了7万公里
如果20只兔子可以换2只羊,9只羊可以换9头猪
请问一列火车一般要装多少空调机组啊!
名创优品我卖气垫bb怎么才能卖出去,顾客才相
这个裤子裤子上的logo是什么牌子
他笑我是单身狗,我应该怎么漂亮回击!亲们,
星期天,小明的妈妈上街去玩,看到一家商店门
请教阳台怎样设计最好
表达安逸生活的句子,形容一个人生活得艰辛不
推荐资讯
公司中秋节祝福短信,中秋节祝福诗句大全
物质A、B、C、D、E、F都是初中化学中的常见物
剧本立项授权书代不代表著作权转让
应用题列式解答:
下列画线的熟语使用不恰当的一项是A.前事不忘
下列图象不能正确反映对应变化关系的是A.向一
顺丰快递手机能空运吗
关于杭州本科大学,请问哪个个本科大学的中文
文中描述的两个动人的场景
不好的玉有辐射和放射性元素?要致癌?
电动车双弹簧减震好处
在aR2++bH++O2====mR3++nH2O的反应中,化学计
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?