1. 程式人生 > >Android DNS之查詢庫函式介面

Android DNS之查詢庫函式介面

概述

這篇筆記總結下,為了實現域名<–>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手冊。