【问题标题】:socket programming confusion of getaddrinfo functiongetaddrinfo函数的socket编程混乱
【发布时间】:2015-01-25 21:32:21
【问题描述】:
在getaddrinfo("www.example.net","1234", &hints, &server_info)
hints参数有什么用?
【问题讨论】:
-
Via Wikipedia: "提示可以是 NULL 也可以是具有我们感兴趣的服务类型的 addrinfo 结构(例如,套接字可用于 TCP 和 UDP,因此我们可以断言我们的兴趣仅适用于前者)”
标签:
c
network-programming
getaddrinfo
【解决方案1】:
getaddrinfo 记录在 man page 中,其中有关于提示参数的说明:
hints 参数指向一个 addrinfo 结构,该结构指定
选择返回的套接字地址结构的标准
res 指向的列表。如果提示不为 NULL,则它指向一个 addrinfo
ai_family、ai_socktype 和 ai_protocol 指定的结构
限制由返回的套接字地址集的标准
getaddrinfo()
所以它是一个根据给定标准限制结果的参数。使用 addrinfo 结构给出标准:
struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
socklen_t ai_addrlen;
struct sockaddr *ai_addr;
char *ai_canonname;
struct addrinfo *ai_next;
};
您可以在同一个手册页上阅读该结构的每个参数。