在linux中的同一个套接字上接收来自不同组的组播数据

时间:2013-07-24 14:49:37

标签: c linux sockets multicast

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

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

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

如果不清楚,请告诉我。

相关问题