int getaddrinfo(
const char* hostname, //主机名 or 地址串(IPv4点分十进制、IPv6十六进制数串)
const char* service, //服务名 or 十进制端口号数串
const struct addrinfo* hints, //调用者在这个结构中填入关于[期望返回]的信息类型的暗示
struct addrinfo** result //传出参数,保存getaddrinfo获得的信息,是一个链表linked-list
);
通过 hostname、service 形参,使 getaddrinfo 函数获得信息,保存到传出参数 result 中。获取的信息有哪些?详细请见 struct addrinfo 结构体介绍。
struct addrinfo{
int ai_flags; //AI_PASSIVE、AI_CANONNAME
int ai_family; //AF_XXXX:AF_INET
int ai_socktype; //SOCK_XXXX:SOCK_STREAM、SOCK_DGRAM
int ai_protocol; //0 or IPPROTO_XXXX for IPv4 and IPv6
char *ai_canonname; //主机规范名
socklen_t ai_addrlen; //length of ai_addr
struct sockaddr *ai_addr; //指向套接字地址结构
struct sockinfo *ai_next; //ptr to next structure in linked-list
}