一、功能
对于IPv4和IPv6均适用,可以处理名字到地址以及服务到端口这两种变换,返回的是一个sockaddr结构而不是一个地址队列
二、函数原型
#include <netdb.h> int getaddrinfo(const char *hostname, const char *service, const struct addrinfo *hints, struct addrinfo **reesult); 返回:成功为0,出错为非0
(1)hostname:是一个主机名或地址串
(2)service:是一个服务名或十进制端口号数串
(3)hints:一个空指针或指向某个addrinfo结构的指针,调用者在这个结构中填入关于期望返回的信息类型的暗示
三、addrinfo结构
struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int protocol; socklen_t ai_addrlen; char *ai_canonname; struct sockaddr *ai_addr; struct addrinfo *ai_next; };
四、hints结构中调用者可以设置的成员
(1)ai_flags;
(2)ai_family;
(3)ai_socktype;
(4)ai_protocol
其中ai_flags成员可用的标志值及其含义如下:
如果hints参数是一个空指针,getaddrinfo函数就假设ai_flag、ai_socktype和ao_protocol的值均为0,ai_family的值为AF_UNSPEC