Во-первых, проверьте, не произошел ли какой-либо из ваших вызовов, socket, bind, setsockopt в этом случае.Распечатка сообщения об ошибке с помощью функции perror () поможет вам диагностировать проблемы.
Однако для получения дейтаграмм многоадресной рассылки вам может потребоваться указать IP-адрес интерфейса при присоединении к группе многоадресной рассылки с использованием параметра сокета IP_ADD_MEMBERSHIPЧто-то вроде
setsockopt (sd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
, где структура mreq
равна
struct ip_mreq
{
struct in_addr imr_multiaddr; /* IP multicast address of group */
struct in_addr imr_interface; /* local IP address of interface */
};
Подробнее здесь .