Interface 如何将多播发送到所有网络接口?

Interface 如何将多播发送到所有网络接口?,interface,udp,send,multicast,Interface,Udp,Send,Multicast,假设我有N个支持多播的网络接口。我计划绑定N个UDP套接字,每个接口一个,并发送到同一个多播ip/端口。有没有比这更直接/有效的方法 接收时,我知道您可以使用同一个套接字通过多个接口进行侦听,但发送不能使用单个套接字,或者可以吗?另一种方法是更改用于在套接字上发送多播的接口。使用这种方法,您将调用send N次,并在每次发送之前更改发送接口。这将允许您减少正在使用的套接字的数量,但不会减少发送呼叫的数量 多播发送行为与网络应用程序编程人员的行为一致,并指导其实现: 在你做的事情上要保守,在你接受

假设我有N个支持多播的网络接口。我计划绑定N个UDP套接字,每个接口一个,并发送到同一个多播ip/端口。有没有比这更直接/有效的方法

接收时,我知道您可以使用同一个套接字通过多个接口进行侦听,但发送不能使用单个套接字,或者可以吗?

另一种方法是更改用于在套接字上发送多播的接口。使用这种方法,您将调用send N次,并在每次发送之前更改发送接口。这将允许您减少正在使用的套接字的数量,但不会减少发送呼叫的数量

多播发送行为与网络应用程序编程人员的行为一致,并指导其实现:

在你做的事情上要保守,在你接受别人的事情上要自由(通常被改写为“在你发送的事情上要保守,在你接受的事情上要自由”)


我的意思是,套接字API和行为使得从单个套接字上的多个接口接收(自由接收)变得非常容易,但不允许从单个套接字发出多播和广播所有接口,因此,迫使程序员非常有意识地编写应用程序以发送多个接口(保守发送)

这句话是关于协议处理的。这与多播API的设计或行为无关,我不认为这是一个协议问题。当它到达协议(有线)级别时,每个接口上总是一个数据包。效率低下(对我来说)是必须创建N个套接字并向堆栈提交N个数据报,而不是采用1对所有接口发送机制。这个问题甚至在最后一段提到尝试使用单个套接字。你如何解释这个问题?