我有一个struct sockaddr结构体,需要创建一个struct addrinfo结构体(因为其他一些API需要这样)。IP地址可能是IPv4或IPv6。怎么处理最好?
我有一个struct sockaddr结构体,需要创建一个struct addrinfo结构体(因为其他一些API需要这样)。IP地址可能是IPv4或IPv6。怎么处理最好?
struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
size_t ai_addrlen;
struct sockaddr *ai_addr;
char *ai_canonname;
struct addrinfo *ai_next;
};
struct addrinfo
比struct sockaddr
包含更多的信息。对于一个struct sockaddr_in
,你可以获得一些这些信息(.ai_family = AF_INET, .ai_addrlen = sizeof(struct sockaddr_in)
)。是否足够取决于其他API所需的内容。