"的数字名称-6ren"> "的数字名称-我正在使用 getnameinfo 如下: ifaddrs *ifaddr = NULL, *ifa = NULL; int rc, family, insize; rc = getifaddrs(&-6ren">
gpt4 book ai didi

linux - getnameinfo 返回带有 "%"的数字名称

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:41 27 4
gpt4 key购买 nike

我正在使用 getnameinfo 如下:

ifaddrs *ifaddr = NULL, *ifa = NULL;
int rc, family, insize;

rc = getifaddrs(&ifaddr);
...

for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
family = ifa->ifa_addr->sa_family
insize = (family == AF_INET) ?
(int)sizeof(struct sockaddr_in) :
(int)sizeof(struct sockaddr_in6);

char host[HOST_NAME_MAX];
rc = getnameinfo(ifa->ifa_addr, insize,
host, sizeof(host), NULL, 0, NI_NUMERICHOST);
}
...

当函数返回 IPv6 地址时,它包括附加到数字 IP 地址的接口(interface):

fe80::62a4:4cff:fe05:dc1b%eth0

将接口(interface)附加到数字IP地址的目的是什么?

是否有可用的标志来控制将接口(interface)附加到 IP 地址?

最佳答案

fe80::* 地址是 link-local在范围内,这意味着该地址仅对该特定网络有效,同一地址可能引用不同网络上的不同主机。因此,在不指定哪个网络适配器的情况下指定链接本地地址是没有意义的。此外,DNS 在链接本地范围之外变得毫无意义,例如 ZeroConf 提供的。/多播 DNS。

Unix 主机倾向于通过名称指定适配器,Windows 主机将通过索引指定适配器。请注意,Windows 为 IPv4 和 IPv6 维护单独的接口(interface)索引。

关于linux - getnameinfo 返回带有 "%<interface>"的数字名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21961996/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com