我正面临与此OP相同的问题:getaddrinfo sorting IPv4 before IPv6 for localhost?
尽管没有可以理解的答案,为什么带有getaddrinfo(NULL, ...)
标志的AI_PASSIVE
返回第一个IPv4,然后返回IPv6?
答案 0 :(得分:1)
我正面临与此OP相同的问题
什么问题?您和另一个OP描述的行为在getaddrinfo()
记录的行为之内。如果只需要IPv6地址,则可以在传递给该函数的提示结构中指定该地址。如果要同时容纳IPv4和IPv6地址,则无法安全地假设它们将被返回的相对顺序。如果您喜欢(例如)IPv6,那么您至少有两个合理的选择,但又愿意使用IPv4:
无论哪种方式,正确使用getaddrinfo()
总是都要求您检查每个返回的地址,以确定其是否满足您的要求,直到找到满足要求的地址或用尽列表。< / p>
除了简单地选择C库的实现者选择执行操作的方式之外,地址的顺序没有特别的“为什么”。