Windows 7 上的多播套接字问题

Multicast socket problems on Windows 7

我已经设置了一个 UDP 服务器,并在本地主机接口和物理以太网上加入了一个多播组,以便能够接收来自 127.0.0.1 和 192.168.78.* 的多播(示例)。

根据文档,多播消息的目标接口是通过源地址确定的,我有一个客户端发送消息,但有时选择本地主机接口,有时选择以太网接口。 IE。在前一种情况下,源地址是 127.0.0.1.

问题:如何强制数据报套接字始终向物理接口发送多播消息? (即源地址为 192.168.78.xx)

According to docs, the destination interface for a multicast message is determined through the source address

没有。它由查找 IP 路由表给出的多播地址的路由决定,除非您使用 IP_MULTICAST_IF 选项,该选项设置传出多播的默认接口。

I have a client sending messages, but sometimes localhost interface is chosen, and sometimes the ethernet interface. I.e. in the former case the source address is 127.0.0.1.

Question: How can I force a datagram socket to always send multicast messages to the physical interface ? (i.e. having a source address of 192.168.78.xx)

使用上述选项。

资料来源:Stevens 等人, Unix 网络编程, 第三版,§21.6。