typedef struct addrinfo {
int ai_flags; //AI_PASSIVE,AI_CANONNAME,AI_NUMERICHOST
int ai_family; //AF_INET,AF_INET6
int ai_socktype; //SOCK_STREAM,SOCK_DGRAM
int ai_protocol; //IPPROTO_IP, IPPROTO_IPV4, IPPROTO_IPV6 etc.
size_t ai_addrlen; //must be zero or a null pointer
char* ai_canonname; //must be zero or a null pointer
struct sockaddr* ai_addr; //must be zero or a null pointer
struct addrinfo* ai_next; //must be zero or a null pointer
}
其中ai_flags、ai_family、ai_socktype说明如下:
参数 取值 值 说明
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_flags值的说明:
AI_NUMERICHOST | AI_CANONNAME | AI_PASSIVE
如上表所示,ai_flags的值范围为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当此标志置位时,此标志表示调用中的节点名必须是一个数字地址字符串。

相关推荐
IGBT无损吸收网络
Coherent推出全系列InP技术组合
中国首例!我国对美国相关光纤产品发起反规避调查
[转帖]IBM可编程网络处理器
SDN可编程交换芯片架构核心:RMT,一个可编程的网络DSA
GSMA:全球 43% 的人口仍未使用移动互联网
采用TDA4290的音量调节网络
怎么样才能让一个网络接口同时有两个ip address?
教程:设置内置逻辑的 IO-Link 网络
Addison.Wesley.Advanced.Linux.Networking.part3.rar
INA103构成的使放大器稳定工作的输入网络
INA217的输入稳定网络电路
超高速光纤创下全球速度纪录:在欧式距离上达到1.02拍比特每秒
AI网络架构或将进入“无交换机”时代
Addison.Wesley.Advanced.Linux.Networking.part1.rar
HTML 解析之 BeautifulSoup
INA166的输入稳定网络电路
: 影响未来的20项数字技术
Addison.Wesley.Advanced.Linux.Networking.part2.rar
我国西部首个,重庆算力互联互通平台在两江新区上线
8、16位MCU接入TCPIP网络方案
帮个忙:一个网络接口是否能拥有两个IP地址?
安捷伦(Agilent)科技公司的网络优化测试仪
网络爬虫开发常用框架Scrapy
Addison.Wesley.Advanced.Linux.Networking.part4.rar