【问题标题】:Receiving multicast data from different groups on the same socket in linux在linux中的同一个套接字上接收来自不同组的多播数据
【发布时间】:2013-07-24 03:13:37
【问题描述】:

假设我想在 linux C 程序中从 239.1.2.3:20000 和 239.4.5.6:20001 接收数据。我可以只用一个插座吗?

我当然可以使用 IP_ADD_MEMBERSHIP setsockopt 选项加入套接字上的多个组,但是,由于端口不同,我不确定是否可以以某种方式“绑定到两个端口”

【问题讨论】:

    标签: c linux sockets multicast


    【解决方案1】:

    不,您不能将一个套接字绑定到 2 个端口,每个端口都需要一个套接字。

    【讨论】:

      【解决方案2】:

      在 TCP 中,每个客户端需要一个套接字。这是因为套接字需要“接受”连接。这是通过在服务器的侦听套接字上调用 accept 来完成的,它返回一个新的套接字(带有一个新端口),它表示特定的客户端-服务器连接。

      在 UDP 中,没有“连接”,而是您只需将数据发送到套接字并希望它到达那里(它可能不会)。如果您使用 UDP 套接字,您的所有客户端都可以向它发送数据,并且您的服务器不必在传入连接上调用接受。您必须创建自己的协议来识别发送消息的客户端(在 hte 消息内部,即您必须解析它以查看其客户端 1 还是客户端 2)。

      如果不清楚,请告诉我。

      【讨论】:

      • 全部正确但不回答问题。
      • 所有真实的除了'with a new port'是不正确的。
      猜你喜欢
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      相关资源
      最近更新 更多