【发布时间】:2018-02-14 09:57:32
【问题描述】:
在 Python 中,当我们想要创建一个侦听多播流量的脚本时,我们将套接字的 IP_ADD_MEMBERSHIP 选项设置为一个值,该值由多播组地址和它将侦听的本地接口的地址组成群组的流量。
Internet 上的许多示例将INADDR_ANY 通配符地址作为本地接口传递给IP_ADD_MEMBERSHIP,其中一些 声明这将使套接字侦听所有 多播数据包接口。但是 Linux ip(7) 手册页指出,当使用 INADDR_ANY
"系统选择了合适的接口"
freebsd 手册页说它将选择“默认界面”。
所以要么网上的一些答案是错误的,要么我在这里遗漏了一些东西。我相信INADDR_ANY 用作IP_ADD_MEMBERSHIP 中的参数时,INADDR_ANY 用作bind() 中的参数(由空字符串表示)时会混淆,但我不太确定。有人可以澄清IP_ADD_MEMBERSHIP 中使用INADDR_ANY 或0.0.0.0 时发生了什么(即它选择默认接口或所有接口),以及与bind 一起使用时它的行为是否不同?
【问题讨论】:
标签: python linux sockets multicast