【问题标题】:getaddrinfo for ipv6 link localgetaddrinfo 用于 ipv6 链接本地
【发布时间】:2013-01-21 17:07:12
【问题描述】:

我试图将地址信息放入 structred addrinfo **result 中。

但我收到以下代码错误

getaddrinfo 中的错误:不支持主机名的地址族

代码

error = getaddrinfo("fe80::4e80:93ff:fe33:13ff%wlan0", NULL, NULL, &result);
if (error != 0)
{
    fprintf(stderr, "error in getaddrinfo: %s\n", gai_strerror(error));
    exit(EXIT_FAILURE);
}

我可以 ping 这个地址 $ping6 fe80::4e80:93ff:fe33:13ff%wlan0

这里是 ifconfig 详细信息

wlan0     Link encap:Ethernet  HWaddr 4c:80:93:33:13:ff  
          inet addr:192.168.43.188  Bcast:192.168.43.255  Mask:255.255.255.0
          inet6 addr: fe80::4e80:93ff:fe33:13ff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1985 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2748 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:950126 (950.1 KB)  TX bytes:684317 (684.3 K

这在我尝试 IPv4 时有效,但我需要获取 ipv6 的 getaddrinfo

【问题讨论】:

  • 这不是主机名,错误可能是您连接到的 DNS 基础设施的限制。

标签: ipv6 getaddrinfo


【解决方案1】:

当您提供NULL 作为提示时,getaddrinfo 将自动使用AI_ADDRCONFIG。通常您希望设置该标志,但是当连接到链接时,本地地址是您不想要的一种情况。

我猜你没有配置全局 IPv6 地址,AI_ADDRCONFIG 因此只选择 IPv4,而不是 IPv6。提供适当的提示是避免这种情况的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多