2016-12-12 8 views
0

Ipv4とIpv6の両方のプロトコルでマルチキャストグループに参加しようとしていますが、これはマルチキャストグループに参加しましたが、これはtutorialを使用しています。私のコードは次のとおりです。setsockoptはマルチキャストメンバーシップでENOPROTOOPTにエラーNOを設定します

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を返し、私はそれに取り組ん後92

+0

'wsdd-> bind'メソッドはどのように定義されていますか? – dbush

+0

リンクのsoap_bindメソッド:https://www.cs.fsu.edu/~engelen/stdsoap2.cpp WITH_IPV6とWITH_NO_IPV6_V6ONLYが定義されています – rotringuser

答えて

1

をerrnoに設定すると、私は私のソケットがAF_INETないAF_INET6上で結合することを見つけます。そのため、IPPROTO_IPV6レベルは私のソケットのオプションではありません。

関連する問題