【问题标题】:Multicast listener accepting sockets on another port多播侦听器接受另一个端口上的套接字
【发布时间】:2015-08-29 16:48:03
【问题描述】:

我在 C 中有一个多播侦听器正在侦听 229.0.0.1,但是正在接受发往 224.0.0.1 的 UDP 套接字。

有人可以解释为什么会这样吗?

进程绑定(服务器) 到INADDR_ANY,组播结构体指定为229.0.0.1;不应该 我的“服务器”进程丢弃未选择用于其他任何内容的 UDP 数据报 比明确配置什么?

【问题讨论】:

  • 您可能应该在此处添加(部分)代码,以便每个人都更容易找到解决方案。
  • 如果你从bind(2)INADDR_ANY,你会得到任何数据包定向到任何本地主机地址(任何普通 IP 地址和任何多播)如果你想要它 要将流量定向到主机地址之一(在本例中为多播),您必须bind() 您的套接字 到该地址。
  • UDP 不接受套接字。它读取数据。

标签: c sockets udp multicast


【解决方案1】:

224.0.0.1 是保留的multicast address,用于寻址本地网段上的所有主机。所有网络接口都在监听这个多播地址。

因此,如果一个数据包被发送到您的应用程序使用的端口上的 224.0.0.1,无论您是否要求侦听该特定多播地址,您的应用程序都会收到该数据包。

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 2021-09-13
    • 2012-04-19
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多