GethostbyName是否保证使用IPv4地址返回托管结构?
-
03-10-2019 - |
题
我不能使用 getaddrinfo(...)
对于解决主机名,因此必须坚持 gethostbyname(...)
是个 gethostbyname(...)
保证返回仅包含IPv4(AF_INET)地址的托管结构的功能,以便以下代码始终导致IPv4地址:
int resolve(const char *name, struct in_addr *addr) {
struct hostent *he = gethostbyname(name);
if (!he)
return 1;
memcpy(addr,he->h_addr_list[0],4);
return 0;
}
其他提示
H_ADDRTYPE告诉您H_ADDR_LIST是否包含IPv4或IPv6或其他类型的地址。您可以使用开关更改行:memcpy(addr,he-> h_addr_list [0],4);到memcpy(addr,he-> h_addr_list [0],n);其中n是地址类型所需的长度。每个msdn文档,h_length是“每个”地址的长度。
不隶属于 StackOverflow