gpt4 book ai didi

c - ipv6组播接收

转载 作者:太空宇宙 更新时间:2023-11-03 23:53:50 25 4
gpt4 key购买 nike

我无法接收服务器发送的多播数据包。我可以看到通过 tcpdump 接收到的数据包。谁能告诉我我在这里做错了什么。谢谢。

struct ipv6_mreq mreq;
struct sockaddr_in6 servaddr;

sock = socket(AF_INET6,SOCK_DGRAM,0);

servaddr.sin6_family = AF_INET6;
servaddr.sin6_port = htons(61624);
servaddr.sin6_addr = in6addr_any;

inet_pton(AF_INET6,"ff38:40:2001::1",&mreq.ipv6mr_multiaddr);

mreq.ipv6mr_interface = 0;
setsockopt(sock,IPPROTO_IPV6,IPV6_JOIN_GROUP, &mreq,sizeof(mreq));
bind(sock,(struct sockaddr *)&servaddr,sizeof(servaddr));
/* using poll to receive data */

最佳答案

无效 应该是“嘿内核,为我选择一个”接口(interface)索引。这对您不起作用,很可能是因为您的路由表没有与给定多播组匹配的显式条目,并且默认路由通过不同的接口(interface)。

使用if_nametoindex(3)解析接口(interface)名称并将其存储到 struct ipv6_mreqipv6mr_interface 成员中。

关于c - ipv6组播接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13246410/

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