[英]How I can receive UDP multicast from all subnets?
The following code receive only UDP multicast in my subnet. 以下代码仅在我的子网中接收UDP多播。 How I can receive UDP multicast from all subnets?
如何从所有子网接收UDP多播?
sd = socket(AF_INET, SOCK_DGRAM, 0);
int reuse = 1;
setsockopt(sd, SOL_SOCKET, SO_REUSEADDR,
(char *) &reuse, sizeof(reuse));
memset((char *) &localSock, 0, sizeof(localSock));
localSock.sin_family = AF_INET;
localSock.sin_port = htons(1900);
localSock.sin_addr.s_addr = INADDR_BROADCAST;
bind(sd, (struct sockaddr*) &localSock, sizeof(localSock));
group.imr_multiaddr.s_addr = inet_addr("239.255.255.250");
group.imr_interface.s_addr = inet_addr("192.168.3.2");
setsockopt(sd, IPPROTO_IP, IP_ADD_MEMBERSHIP,
(char *) &group, sizeof(group));
/* Read from the socket. */
You need to join the group via all interfaces, not just 192.168.3.2. 您需要通过所有接口(不仅仅是192.168.3.2)加入该组。
You also need to bind your socket to INADDR_ANY, not INADDR_BROADCAST. 您还需要将套接字绑定到INADDR_ANY,而不是INADDR_BROADCAST。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.