首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何确定ipv6_mreq结构中ipv6mr_interface字段的值

如何确定ipv6_mreq结构中ipv6mr_interface字段的值
EN

Stack Overflow用户
提问于 2009-10-23 04:20:23
回答 2查看 2.1K关注 0票数 0

我正在尝试创建一个BSD套接字来侦听来自特定IPv6多播地址的消息。我目前在创建侦听正确地址0::0的套接字时没有问题。

问题是我运行在一个有多个NIC的小型嵌入式linux服务器上;这里ipv6_mreq的ipv6mr_interface字段很重要。经过反复试验,我确定0、1和3不起作用,但2起作用(它会将所有IPv6多播消息发送到我的地址ff05::3,并到达正确的接口)。

我的问题是:在linux中,如何将我的接口、我认识的人的地址与正确的接口编号关联起来?

EN

回答 2

Stack Overflow用户

发布于 2009-10-25 04:48:11

也许您可以看看if_nametoindex(3)函数(见/usr/include/net/in.h)。

诚心诚意,Rémi

票数 3
EN

Stack Overflow用户

发布于 2009-10-24 00:19:46

总结我对原始答案的评论:

  1. Stevens (UNIX Network Programming Vol.1)提供了一种将设备名映射到端口号的解决方案。这包括在操作系统路由表中查询原始套接字上的接口号。在第二版中,这在17.6节中介绍,在第三版中,这在18.6节中介绍。
  2. 在选项一中,您还可以使用proc文件系统来收集相同的信息。特别需要注意的是/proc/net/dev_mcast文件。这个文件给出了接口名称和接口编号之间的映射;从IP地址到接口名称的映射大概也很简单。

选项1可能是最健壮的,因为proc文件系统可以改变它的组织方式、可用信息和格式化方式。我个人并不熟悉Linux内核改变这些属性的频率,所以,欢迎对此有更多信息的人评论或编辑这篇文章。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1609721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档