Networking 加入具有IP_ADD_成员身份的新创建接口上的多播组
我有一个mDNS响应程序,它必须响应所有接口上的多播查询 例如,在启动时,它使用Networking 加入具有IP_ADD_成员身份的新创建接口上的多播组,networking,udp,multicast,mdns,Networking,Udp,Multicast,Mdns,我有一个mDNS响应程序,它必须响应所有接口上的多播查询 例如,在启动时,它使用以太网接口将套接字添加到多播组中 然后我连接到一个VPN,一个新的ppp接口出现。如何将我的套接字添加到新创建的接口中,以便能够响应它们 例如: 我启动mDNS响应程序应用程序。它创建一个UDP套接字并将其绑定到INADDR\u ANY(0.0.0.0)。然后,套接字加入以太网接口上的mDNS多播组,例如地址224.0.0.251,接口192.168.0.102 我运行dig@224.0.0.251 hedgaron
以太网接口将套接字添加到多播组中
然后我连接到一个VPN,一个新的ppp
接口出现。如何将我的套接字添加到新创建的接口中,以便能够响应它们
例如:
我启动mDNS响应程序应用程序。它创建一个UDP套接字并将其绑定到INADDR\u ANY(0.0.0.0)
。然后,套接字加入以太网接口上的mDNS多播组,例如地址224.0.0.251
,接口192.168.0.102
我运行dig@224.0.0.251 hedgaron-debian-test.local-p5353
并收到一个答案
我连接到VPN,正在创建一个新的tun0
接口
我再次运行dig@224.0.0.251 hedgaron-debian-test.local-p 5353
,我的查询没有通过,因为(我猜)响应者的套接字没有加入到新创建接口上的多播组。Ofc,这次dig从新接口进行查询
注意:我听说l2tp/ipsec
VPN不能与以太网一起工作。也许这也是一个问题
如何使套接字在所有接口上接受多播数据包?我找到了解决方案<代码>l2tp/ipsec
不是问题
插座必须在每个接口上连接到多组,而不仅仅是在0.0.0
上。要在后台连接新创建的接口,应用程序必须启动一个线程,该线程每N秒在所有接口上重新连接一次
它允许套接字接受来自所有网络的多播数据包。请添加有关您尝试的内容和出现错误的详细信息。看到当您首先连接到vpn时会发生什么吗?它适用于vpn和以太网,但如果vpn仍然启用,则不接受来自以太网的查询。我猜是因为l2tp。您使用的是一个链接本地(224.0.0.251
)多播组,无法发送到其他链接(在224.0.0.0/24
范围内的任何内容)。我想我无法使用另一个带有MDN的组。