我试图将地址信息输入到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
答案 0 :(得分:2)
当您提供NULL
作为提示时,getaddrinfo将自动使用AI_ADDRCONFIG
。通常你想要设置该标志,但是当连接到链接时,本地地址就是你不想要它的情况。
我猜你没有配置全局IPv6地址,因此AI_ADDRCONFIG
只选择IPv4,而不选择IPv6。提供适当的提示是避免这种情况的方法。