主机上的getaddrinfo()是否会返回多个IPv4地址?

Lit*_*tor 2 c++ sockets

我打电话getaddrinfo()如下:

addrinfo hints;
addrinfo* res = NULL;

hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_PASSIVE;

getaddrinfo(NULL, "http", &hints, &res);
Run Code Online (Sandbox Code Playgroud)

目前结果是否可能包含多个带有IPv4地址的结果?我能想到的唯一原因可能是具有单独连接的多个设备,但我一半期望它只返回主连接的地址或它恰好使用的一个连接.

for*_*rk0 5

是.

关于getaddrinfo手册页有关于该主题的说明

链表可能具有多个addrinfo结构的原因有多种,包括:网络主机是多宿主的,可通过多种协议访问(例如AF_INET和AF_INET6); 或者多个套接字类型可以使用相同的服务(例如,一个SOCK_STREAM地址和另一个SOCK_DGRAM地址).通常,应用程序应尝试按返回顺序使用地址.getaddrinfo()中使用的排序函数在RFC 3484中定义; 通过编辑/etc/gai.conf(从glibc 2.5开始可用),可以为特定系统调整顺序.