全部博文(96)
分类: 系统运维
2009-10-22 10:55:02
函数
|
参数说明
|
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
|