2016-12-12 8 views
0

Я пытаюсь присоединиться к многоадресной группе по протоколу Ipv4 и Ipv6, для Ipv4 я успешно присоединился к группе многоадресной передачи, но для Ipv6 с использованием этого tutorial, но я не мог этого сделать. Мой код:setsockopt устанавливает ошибку no ENOPROTOOPT для многоадресного членства

ipv6_mreq m6cast; 
sockaddr_in6 group; 
inet_pton(AF_INET6, "FF02:0000:0000:0000:0000:0000:0000:000C", &group.sin6_addr); 
m6cast.ipv6mr_interface = INADDR_ANY; 
m6cast.ipv6mr_multiaddr = group.sin6_addr; 
int socket = wsdd->bind(NULL,3702,100); 
if (setsockopt(socket, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mcast, sizeof(mcast)) < 0) 
    socket= -1; 
std::cout << errno << std::endl; //prints 0 
if (setsockopt(socket, IPPROTO_IPV6,IPV6_ADD_MEMBERSHIP , &m6cast, sizeof(m6cast)) < 0) 
    socket= -1; 
std::cout << errno << std::endl; //prints 92 

Но setsockopt возвращает -1 с установкой ERRNO до 92.

+0

Как определяется метод 'wsdd-> bind'? – dbush

+0

метод soap_bind по ссылке: https://www.cs.fsu.edu/~engelen/stdsoap2.cpp WITH_IPV6 и WITH_NO_IPV6_V6ONLY определены – rotringuser

ответ

1

После того как я работал над ним, я считаю, что мое гнездо связывания над AF_INET не AF_INET6. Из-за этого уровень IPPROTO_IPV6 не является вариантом для моего сокета.