我不能使用getaddrinfo(...)
主機名解析,因此必須堅持gethostbyname(...)
gethostbyname是否保證返回帶有IPv4地址的hostent結構?
是對gethostbyname(...)
功能保證返回只包含成功的IPv4(AF_INET)地址hostent結構,所以,下面的代碼將總是導致一個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;
}
因此,如果gethostbyname後面的DNS解析器返回IPv6地址,我的應用程序將失敗? – Robert 2010-05-06 19:00:13
@羅伯特 - 這是主觀的。應用程序的_user_可以連接到IPV6地址嗎? – 2010-05-06 19:06:00
@Tim:它也可以成功,因爲它是一個檢查網站更新的程序。但是,如果我也接受AF_INET6,我的結構應該多大? – Robert 2010-05-06 19:10:30