http://blog.csdn.net/ly21st http://ly21st.blog.chinaunix.net
分类: LINUX
2011-09-24 09:49:47
int getaddrinfo(const char * hostname, const char * service, const struct addrinfo * hints, struct addrinfo ** result);
返回:成功返回0,出错返回非零
这个函数通过result返回一个指向addrinfo结构链表的指针。
struct addrinfo {
int ai_flags; // AI_PASSIVE,AI_CANONNAME
int ai_family; // AF_xxx;
int ai_socktype; // SOCK_xxx;
int ai_protocol; // 0 or IPPROTO_xxx for IPv4 and IPv6
使用方法实例:
getaddrinfo解决了将主机名和服务名转换成套接口地址结构的问题,一个功能与其相反的函数为getnameinfo,它把套接口地址结构转换成主机名和服务名。
11.4 freeaddrinfo函数
void freeaddrinfo(struct addrinfo * ai);
该函数释放由getaddrinfo返回的存储空间。
11.5 getaddinfo函数:IPv6和UNIX 域
11.13 getnameinfo函数
该函数以一个套接口地址为参数,返回一个描述主机的字符串和一个描述服务的字符串,它以一种独立于协议的方式提供这些信息。
int getnameinfo(const struct sockaddr *sockaddr, sockaddr_t addrlen, char *host, size_t hostlen, char * serv , size_t servlen, int flags);
返回: 成功返回0,出错返回-1
sock_ntop和getnameinfo的差别在于,前者不查DNS直接返回可输出的IP地址和端口号,而后者通常试图给主机和服务查到一个名字。