• 1.摘要
  • 2.基本信息
  • 3.函数说明
  • 4.参数设置
  • 4.1.参数说明
  • 4.2.aiflags值的说明
  • 5.实际常用设置
  • 6.函数使用示例
  • 7.参考资料

getaddrinfo

gethostbyname和gethostbyaddr这两个函数仅仅支持IPv4,getaddrinfo函数能够处理名字到地址以及服务到端口这两种转换,返回的是一个sockaddr结构的链表而不是一个地址清单。这些sockaddr结构随后可由套接口函数直接使用。如此一来,getaddrinfo函数把协议相关性安全隐藏在这个库函数内部。应用程序只要处理由getaddrinfo函数填写的套接口地址结构。该函数在 POSIX规范中定义了。

基本信息

  • 外文名

    getaddrinfo

  • 特点

    支持IPv4 和IPv6

  • 目的

    该函数在 POSIX规范中定义了

  • 属于

    可由套接口函数直接使用

函数说明

包含头文件

Linux下为#include<netdb.h>

windows下为#include <ws2tcpip.h>

函数原型

int getaddrinfo( const char *hostname, const char *service, const struct addrinfo *hints, struct addrinfo **result );

参数说明

hostname:一个主机名或者地址串(IPv4的点分十进制串或者IPv6的16进制串)

service:服务名可以是十进制的端口号,也可以是已定义的服务名称,如ftp、http等

hints:可以是一个空指针,也可以是一个指向某个addrinfo结构体的指针,调用者在这个结构中填入关于期望返回的信息类型的暗示。举例来说:指定的服务既可支持TCP也可支持UDP,所以调用者可以把hints结构中的ai_socktype成员设置成SOCK_DGRAM使得返回的仅仅是适用于数据报套接口的信息。

result:本函数通过result指针参数返回一个指向addrinfo结构体链表的指针。

返回值:0——成功,非0——出错

数据结构说明

addrinfo类型说明:1

struct addrinfo {

int ai_flags;

int ai_family;

int ai_socktype;

int ai_protocol;