Android DNS之查詢庫函式介面
阿新 • • 發佈:2019-01-30
概述
這篇筆記總結下,為了實現域名<–>IP地址、服務名<–>埠號之間的轉換,系統到底對外提供了哪些介面。
域名<–>IP地址轉換
域名–>IP地址
gethostbyname()
struct hostent *gethostbyname(const char *name);
getaddrinfo()
int getaddrinfo(const char *hostname, const char *servname,
const struct addrinfo *hints, struct addrinfo **res)
IP地址–>域名
gethostbyaddr()
struct hostent * gethostbyaddr(const void *addr, socklen_t len, int af)
getnameinfo()
int getnameinfo(const struct sockaddr* sa, socklen_t salen, char* host, size_t hostlen,
char* serv, size_t servlen, int flags);
服務名<–>埠號
服務名->埠號
getservbyname()
struct servent* getservbyname (const char* name, const char* proto);
實際上該介面同時還可以實現服務名->埠號的轉換。
埠號->服務名
getservbyport()
struct servent *getservbyport(int port, const char *proto);
實際上,前面getnameinfo()也可以實現埠號->服務名的轉換。
最後,關於這幾個庫函式介面的詳細說明,可以參考其各自的man手冊。