栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Linux上的C / C ++中使用ipv6 udp套接字进行多播?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Linux上的C / C ++中使用ipv6 udp套接字进行多播?

下面的代码是正确的:
唯一错误的是用于多播的地址。
就像Je​​remy所说的那样, ff0e ::不正确,我改用ff12 :: feed:a:dead:beef可以正常工作

使用if_nameindex()可以获得可用接口的名称和索引。

更新:我试图删除一些代码,看看没有它是否可以工作,我设法做到了:

服务器:

// OPENint fd = socket(AF_INET6, SOCK_DGRAM, 0);// BINDstruct sockaddr_in6 address = {AF_INET6, htons(4321)};bind(fd, (struct sockaddr*)&address, sizeof address);// JOIN MEMBERSHIPstruct ipv6_mreq group;group.ipv6mr_interface = 0;inet_pton(AF_INET6, "ff12::1234", &group.ipv6mr_multiaddr);setsockopt(fd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &group, sizeof group);// READchar buffer[128];read(fd, buffer, sizeof buffer);

客户:

// OPENint fd = socket(AF_INET6, SOCK_DGRAM, 0);// ADDRESSstruct sockaddr_in6 address = {AF_INET6, htons(4321)};inet_pton(AF_INET6, "ff12::1234", &address.sin6_addr);// SEND TOchar buffer[128];strcpy(buffer, "hello world!");sendto(fd, buffer, sizeof buffer, 0, (struct sockaddr*)&address, sizeof address);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号