gpt4 book ai didi

c++ - setsockopt 在多播成员资格上将错误号设置为 ENOPROTOOPT

转载 作者:行者123 更新时间:2023-11-28 05:22:49 26 4
gpt4 key购买 nike

我正在尝试通过 Ipv4 和 Ipv6 协议(protocol)加入多播组,对于 Ipv4 我成功加入了多播组但对于 Ipv6 使用此 tutorial但我做不到。我的代码是:

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。

最佳答案

在我处理它之后,我发现我的套接字绑定(bind)在 AF_INET 而不是 AF_INET6 上。因此,IPPROTO_IPV6 级别不是我的套接字的选项。

关于c++ - setsockopt 在多播成员资格上将错误号设置为 ENOPROTOOPT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41096498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com