我正在尝试列出 linux 系统上所有打开的多播套接字?netstat -g 列出了加入的组。为此,我可以使用任何其他实用程序吗?
非常感谢您的帮助。
除此之外,netstat -g
您还可以使用它来查看绑定到多播地址的所有套接字:
netstat -anu|sort -nk4
这是所有 UDP 套接字的列表(无论是否多播)。查找 224.0.0.0 到 239.255.255.255 范围内的所有地址。这些是绑定到多播地址的套接字,无论它们是否加入多播组。这些将只接收此多播组的流量。
但:
实际上,用于接收多播流量的 UDP 套接字通常绑定到地址 0.0.0.0。这些可以接收所有单播和多播地址的 UDP 数据包,并且服务器通常会根据源 IP 地址进行一些额外的过滤。
因此,在上面的列表中,您可能还想查看绑定到 0.0.0.0 的 UDP 套接字,例如 0.0.0.0:5353,它很可能是 mDNS(avahi,zeroconf)服务器。
我认为没有一种工具可以为您提供该信息。
原因是多播套接字没有绑定到地址,它只参与多播组(IP_ADD_MEMBERSHIP)。一个套接字可以在同一个接口上加入多个不同的组,或者在不同的接口上加入同一个组,因此维护这些交叉引用毫无意义。内核公开的唯一信息在 /proc/net 中,在本例中为 /proc/net/igmp (<- netstat -g)。