繁体   English   中英

ipv6组播接收

[英]ipv6 multicast reception

我无法接收服务器发送的多播数据包。 我可以看到通过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 */

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM