假设我有 N 个支持多播的网络接口。我打算绑定 N 个 UDP 套接字,每个接口一个,并发送到同一个多播 ip/端口。还有比这更直接/更有效的方法吗?
接收时,我知道您可以使用同一个套接字侦听多个接口,但是不能使用单个套接字完成发送,或者可以吗?
另一种方法是使用IP_MULTICAST_IF更改用于在套接字上发送多播的接口。使用这种方法,您将调用 send N 次并在每次发送之前更改发送接口。这将允许您减少正在使用的套接字数量,但不会减少发送调用的数量。
多播发送行为符合并引导网络应用程序程序员遵循鲁棒性原则/Postel 定律:
在你所做的事情上保持保守,在你从别人那里接受的事情上保持自由(通常被改写为“在你发送的事情上保持保守,在你接受的事情上保持自由”)。
我的意思是套接字 API 和行为使得从单个套接字上的多个接口接收(自由接收)变得非常容易,但不允许从单个套接字发送多播和广播所有接口,从而迫使程序员非常有意识地编写应用程序发送多个接口(保守发送)