函数
|
参数说明
|
int getaddrinfo(
const char* nodename
const char* servname,
const struct addrinfo* hints,//
struct addrinfo** res
);
|
nodename:
节点名可以是主机名,也可以是数字地址。(
IPV4
的
10
进点分,或是
IPV6
的
16
进制)
servname:
包含十进制数的端口号或服务名如(
ftp,http
)
hints:
是一个空指针或指向一个
addrinfo
结构的指针,由调用者填写关于它所想返回的信息类型的线索。
res:
存放返回
addrinfo
结构链表的指针
|
结构
|
固定的参数
|
typedef struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
size_t ai_addrlen;
char* ai_canonname;
struct sockaddr* ai_addr;
struct addrinfo* ai_next;
}
|
ai_addrlen must be zero or a null pointer
ai_canonname must be zero or a null pointer
ai_addr must be zero or a null pointer
ai_next must be zero or a null pointer
|
可以改动的参数
|
|
ai_flags:AI_PASSIVE,AI_CANONNAME,AI_NUMERICHOST
ai_family:
AF_INET,AF_INET6
ai_socktype:
SOCK_STREAM,SOCK_DGRAM
ai_protocol:
IPPROTO_IP, IPPROTO_IPV4, IPPROTO_IPV6 etc.
|
参数
|
取值
|
值
|
说明
|
ai_family
|
AF_INET
|
2
|
IPv4
|
AF_INET6
|
23
|
IPv6
|
|
AF_UNSPEC
|
0
|
协议无关
|
|
ai_protocol
|
IPPROTO_IP
|
0
|
IP
协议
|
IPPROTO_IPV4
|
4
|
IPv4
|
|
IPPROTO_IPV6
|
41
|
IPv6
|
|
IPPROTO_UDP
|
17
|
UDP
|
|
IPPROTO_TCP
|
6
|
TCP
|
|
ai_socktype
|
SOCK_STREAM
|
1
|
流
|
SOCK_DGRAM
|
2
|
数据报
|
|
ai_flags
|
AI_PASSIVE
|
1
|
被动的,用于
bind
,通常用于
server socket
|
AI_CANONNAME
|
2
|
||
AI_NUMERICHOST
|
4
|
地址为数字串
|
AI_NUMERICHOST
|
AI_CANONNAME
|
AI_PASSIVE
|
0/1
|
0/1
|
0/1
|