getaddrinfo函数原型
2007-05-28 12:15
Getaddrinfo
提供独立于协议的名称解析。
函数的前两个参数分别是节点名和服务名。节点名可以是主机名,也可以是地址串
(IPv4
的点分十进制数表示或
IPv6
的十六进制数字串
)
。服务名可以是十进制的端口号,也可以是已定义的服务名称,如
ftp
、
http
等。注意:其中节点名和服务名都是可选项,即节点名或服务名可以为NULL,此时调用的结果将取缺省设置,后面将详细讨论。
函数的第三个参数
hints
是
addrinfo
结构的指针,由调用者填写关于它所想返回的信息类型的线索。函数的返回值是一个指向
addrinfo
结构的链表指针
res
。
2.addrinfo结构
3 参数说明
在
getaddrinfo
函数之前通常需要对以下
6
个参数进行以下设置:
nodename
、
servname
、
hints
的
ai_flags
、
ai_family
、
ai_socktype
、
ai_protocol
在
6
项参数中,对函数影响最大的是
nodename
,
sername
和
hints.ai_flag
而
ai_family
只是有地址为
v4
地址或
v6
地址的区别。而
ai_protocol
一般是为
0
不作改动。
其中
ai_flags
、
ai_family
、
ai_socktype
说明如下:
对于
ai_flags
值的说明:
如上表所示,
ai_flagsde
值范围为
0~7
,取决于程序如何设置
3
个标志位,比如设置
ai_flags
为
“AI_PASSIVE|AI_CANONNAME”
,
ai_flags
值就为
3
。三个参数的含义分别为:
(1)AI_PASSIVE
当此标志置位时,表示调用者将在
bind()
函数调用中使用返回的地址结构。当此标志不置位时,表示将在
connect()
函数调用中使用。
当节点名位
NULL
,且此标志置位,则返回的地址将是通配地址。
如果节点名
NULL
,且此标志不置位,则返回的地址将是回环地址。
(2)AI_CANNONAME
当此标志置位时,在函数所返回的第一个
addrinfo
结构中的
ai_cannoname
成员中,应该包含一个以空字符结尾的字符串,字符串的内容是节点名的正规名。
(3)AI_NUMERICHOST
当此标志置位时,此标志表示调用中的节点名必须是一个数字地址字符串。
|