如何将链路本地地址绑定到ipv6套接字

Hai*_*ang 8 c ipv6

这个问题可以被视为我自己发布的前一个问题的姐妹问题.当您想要将链接本地地址绑定到IPv6套接字时,您需要设置结构的sin6_scope_id字段,这非常繁琐sockaddr_in6.我想知道是否有人可以按照良好做法提供解决方案.

Ste*_*e-o 11

IPv6链路本地地址在节点上不是唯一的,它仅对NIC是唯一的,这就是您必须指定scope-id的原因.换句话说,拥有完全相同IPv6地址的多个适配器是完全有效的.

这意味着您应该将您可以传递给的scope-id或合适的文本格式(%eth0,%1)作为输入getaddrinfo().

一种方法是接受IPv6链接本地地址,枚举接口,如果只有一个匹配使用该接口,如果有多个匹配,则使用接口列表进行救援并让用户指定完整形式的接口.