Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking 加入具有IP_ADD_成员身份的新创建接口上的多播组_Networking_Udp_Multicast_Mdns - Fatal编程技术网

Networking 加入具有IP_ADD_成员身份的新创建接口上的多播组

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

我有一个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-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的组。