【发布时间】:2011-03-20 17:38:24
【问题描述】:
我希望能够遍历作为getaddrinfo() 函数结果的列表,并使用该列表的每个元素调用connect(),直到connect() 成功。不幸的是,即使我指定了AI_ALL | AI_V4MAPPED 标志和AF_INET6 系列,结果也是喜忧参半。列表的第一部分包含sockaddr_in6 结构,第二部分包含sockaddr_in 结构,所以我不能将它们与AF_INET6 套接字一起使用。
我知道我可以创建两个套接字。我想知道是否可以只使用AF_INET6 套接字。
这是操作系统:
> uname -a
> Linux debian 2.6.32-5-amd64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64 GNU/Linux
【问题讨论】:
-
为什么不能跳过 v4 地址?
-
@Erik: 可能是因为有些主机不支持 ipv6...
-
@Adrien:我理解 OP 只想要 ip6...也许不是。
-
我正在学习 API,我想编写一个可靠的客户端,它能够连接到使用任一类型套接字的服务器。
-
@kubi:
AI_ALL | AI_V4MAPPED和AF_INET6应该返回所有找到的映射到 IP6 的 IP4 - 确定你没有同时获得 IP4 地址作为 IP6 和 IP4?如果这样做,您仍然可以跳过AF_INET地址
标签: c linux networking posix