How to set up a socket for UDP multicast with 2 network cards present?

后端 未结 2 1521
攒了一身酷
攒了一身酷 2020-12-29 09:41

I\'m trying to get udp multicast data using sockets and c++ (c). I have a server with 2 network cards so I need to bind socket to specific interface. Currently I\'m testing

2条回答
  •  臣服心动
    2020-12-29 10:18

    I think you need to add IP_MULTICAST_IF

        struct  ip_mreq         multi;
    
       multi.imr_multiaddr.s_addr = inet_addr(group.c_str());
       multi.imr_interface.s_addr = (source_iface.empty() ?
             htonl(INADDR_ANY): inet_addr(source_iface.c_str()));
    
        status = setsockopt(me->ns_fd, IPPROTO_IP, IP_MULTICAST_IF,
            (char *)&multi.imr_interface.s_addr,
            sizeof(multi.imr_interface.s_addr));
    

    I hope that helps.

提交回复
热议问题