【问题标题】:Multicast socket problems on Windows 7Windows 7 上的多播套接字问题
【发布时间】:2015-04-14 06:58:27
【问题描述】:

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

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

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

【问题讨论】:

    标签: sockets multicast


    【解决方案1】:

    根据文档,多播消息的目标接口是通过源地址确定的

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

    我有一个客户端发送消息,但有时选择 localhost 接口,有时选择以太网接口。 IE。在前一种情况下,源地址是 127.0.0.1。

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

    使用上述选项。

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

    【讨论】:

    • 谢谢!我认为 IP_MULTICAST_IF 正是我所追求的。
    • 有趣的是,Win7 似乎(根据观察)随机选择界面。
    • 很难理解为什么,但是从那个供应商那里可以做任何事情。 Stevens 专门谈论 BSD Unix。
    • 不幸的是,IP_MULTICAST_IF 在 Windows 上似乎是无操作的,我仍然可以通过本地接口获取多播消息:(
    • 我发现在 Windows 上我需要显式绑定到每个接口地址,并在每个接口上发送多播。
    猜你喜欢
    • 2021-03-10
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2011-04-12
    • 2018-10-12
    相关资源
    最近更新 更多