首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在具有多个接口的服务器上接收组播(linux)

在具有多个接口的服务器上接收组播(linux)
EN

Stack Overflow用户
提问于 2011-03-30 08:21:52
回答 2查看 19.3K关注 0票数 8

若要在非默认NIC (dvb)上接收多播,请执行以下操作:

SOCK_DGRAM)

  • join
  • 打开一个套接字(AF_INET,dvb接口上的多播地址
  • 绑定多播地址(请注意,常见的错误是绑定"0.0.0.0“,然后在该套接字上接收-甚至是您不感兴趣的多播)和端口

此时,接收所需多播数据包的唯一方法是在路由表中添加一条规则,通过dvb到达发送方(另一个网络)所在的网络,就好像dvb需要回复组播发送方一样;假设是一种源发送方组播模式。有人知道怎么回事吗?这个问题让我很烦,因为原则上我不知道发送者的ip。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-30 11:01:58

你似乎被rp_filter反向路径过滤刺痛了.如果数据包到达一个没有源地址路由的接口,就会被丢弃。

您可以使用sysctl /proc/sys/net/ipv4/conf/<if>/rp_filter在每个接口基础上禁用它。

票数 11
EN

Stack Overflow用户

发布于 2011-03-30 09:44:27

绑定多播地址

这绝对是错误的。必须绑定到实际适配器的实际IP地址,即0.0.0.0。

注意到一个常见的错误是绑定"0.0.0.0“

这不是个错误。THat是正确的过程,除非您只想听一个IP地址。

,然后在套接字上接收,甚至是你不感兴趣的多播

我不知道这意味着什么。

原则上我不知道发件人的ip

任何UDP数据报的发件人的IP地址都可以通过套接字API获得。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5483779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档