3

我试图将地址信息放入 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

4

1 回答 1

3

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

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

于 2013-01-27T12:33:22.123 回答