簡體   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