gethostbyname和gethostbyaddr
gethostbyname根据主机名称获取主机的完整信息,gethostbyaddr根据IP地址获取主机的完整信息。
gethostname通常先在本地/etc/hosts配置文件查找,如果没有再向DNS服务器查找。
#include <unistd.h>
#include <sys/socket.h>
int gethostname(char *name, size_t len);
struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);
struct hostent {
char *h_name; /* 主机名 */
char **h_aliases; /* 主机别名列表 */
int h_addrtype; /* 地址类型 */
int h_length; /* 地址长度 */
char **h_addr_list; /* ip地址列表 */
}
name参数指定目标主机名,addr参数指定目标主机的IP地址,len参数指定addr的地址大小,type参数指定addr所指IP地址的类型。
代码实现:根据主机名baidu和百度的ip地址获取百度的信息。
getservbyname和getservbyport
#include <netdb.h>
struct servent *getservent(void);
struct servent *getservbyname(const char *name, const char *proto);
struct servent *getservbyport(int port, const char *proto);
getservbyname函数根据名称获取某个服务的完整信息。
getservbyport函数根据端口号