Error “No such device” in call setsockopt when joining multicast group

前端 未结 2 1358
既然无缘
既然无缘 2020-12-31 08:35

I have a code in which send multicast datagrams. A critical piece of code:

uint32_t port;
int sockfd, err_ip;
const uint32_t sizebuff = 65535 - (20 + 8);
uns         


        
相关标签:
2条回答
  • 2020-12-31 08:50

    IP_ADD_MEMBERSHIP and bind() are only required for receiving multicast, use IP_MULTICAST_IF instead for effectively a "send-only membership" of a multicast group.

    IP_MULTICAST_IF sets the kernel to send multicast packets for a given group on a given interface, it is effectively "send-only" as you will not be able to receive traffic on that group after setting. This varies by platform: Posix platforms generally function this way as an optimisation, whilst Win32 will perform software level routing to propagate locally generated packets.

    0 讨论(0)
  • 2020-12-31 09:14

    If it works for one IP but not for another, maybe this can help.

    What does "IP_ADD_MEMBERSHIP: No such device" mean?

    It means that the tool is trying to use multicast but the network interface doesn't support it There are two likely causes:

    • Your machine doesn't have multicast support enabled. For example, on Linux and FreeBSD it is possible to compile a kernel which doesn't support multicast.

    • You don't have a route for multicast traffic. Some systems don't add this by default, and you need to run. route add -net 224.0.0.0 netmask 224.0.0.0 eth0 (or similar). If you wish to use RAT in unicast mode only, it is possible to add the multicast route on the loopback interface.

    0 讨论(0)
提交回复
热议问题