【问题标题】:Using the same UDP port for unicast receive, multicast send使用相同的 UDP 端口进行单播接收、多播发送
【发布时间】:2021-09-05 03:49:28
【问题描述】:

我在 Windows 10 下开发了一个简单的应用程序,它侦听给定端口上的 UDP 数据报,然后将数据报路由到使用相同端口的多播组(例如:绑定端口 0.0.0.0:5202 并发送到多播组224.0.0.100:5202)。这是必需的,因为最初以多播方式发送的数据源可能连接到不支持多播的网络。应用程序使单播通信适应多播。为了避免多播接收者发生变化并尽量减少发送者的变化,我们决定保持端口不变(源端口和最终目标端口)。

问题是一旦我启动适配器应用程序,在同一主机上运行的多播接收者无法绑定到多播组。我正在使用 boost asio 库让应用程序在 Windows 10 和 Linux 目标下运行。

我设置了重用地址套接字选项,但客户端无论如何都无法绑定。任何想法 ?还是这东西在 Windows 10 下无法运行?

【问题讨论】:

  • 您的应用和多播接收应用需要使用 SO_REUSEPORT。

标签: windows udp boost-asio bind multicast


【解决方案1】:

多播接收者应用程序可以监听环回接口 127.0.0.1 吗?如果是这样,您的适配器可以侦听物理接口(而不是 0.0.0.0),获取 UDP 数据然后通过接口 127.0.0.1 重新发送到 224.0.0.100:5202。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2017-07-13
    • 2018-11-20
    • 2012-06-05
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    相关资源
    最近更新 更多