【发布时间】:2015-04-29 16:38:51
【问题描述】:
我正在尝试使用源特定多播 (SSM) 为 linux 上的应用程序设置多播源,并且代码运行正常(使用 C 接口),但我想验证系统的行为是否符合我的预期到。
设置:
多播地址 - 233.X.X.X:9876
源 1 - 192.X.X.1
源 2 - 192.X.X.2
接口 1 - 192.X.X.100
接口1 - 192.X.X.101
步骤
- 配置以便只有 Source1 发送到多播地址
- 启动一个读卡器(reader1),绑定多播地址,以ssm src作为Source1,interface作为Interface1加入多播
- 观察在 reader1 上可以看到数据
- 做同样的事情 (reader2) 但使用 Source2 和 Interface2
期望的结果:
Reader1 可以看到来自多播的数据。
Reader2 看不到来自多播的数据。
我担心上述情况不会发生,因为在我使用非特定源多播的测试中,IP_ADD_MEMBERSHIP 具有全局影响。所以 reader2 的套接字可以看到数据,因为它绑定到唯一的多播地址,该地址已加入到查看数据的接口。 this link under "Joining a Multicast" 的信息与我的观察相符。
很可能 IP_ADD_SOURCE_MEMBERSHIP 的行为与 IP_ADD_MEMBERSHIP 不同,但文档很少而且在这方面没有具体说明。
具体问题:
- 是使用 IP_ADD_SOURCE_MEMBERSHIP 全局的多播连接,即会导致绑定到多播地址的任何套接字绑定()从该源接收数据包。
- 一般应该如何使用 SSM?一个多播地址有 N 个源有意义吗?
我对网络编程没有经验,所以请原谅我理解的任何不足。
感谢您的帮助。
【问题讨论】:
标签: c linux sockets networking multicast