gethostbyname,gethostbyaddr
struct hostent* gethostbyname(const char*hostname);
struct hostent
{
char* h_name;// 主机名
char** h_aliases;// 别名列表
int h_addrtype;
int h_length;// IP地址个数
char** h_addr_list;// IP地址列表
};
struct hostent* gethostbyaddr(
const char* addr,// struct sockaddr*
sock_len_t len, // int
int family);
gethostbyname/gethostbyaddr
,目的是获取主机IP
地址.
getservbyname,getservbyport
服务:提供某种功能
协议:以TCP
或UDP
方式进行服务提供
服务需基于某个传输协议,在某个指定端口提供服务
服务配置文件:/etc/services
但有些服务即使在此配置文件中配置了,但实际主机可能并未启用.有些服务,实际起作用,但并没在此配置文件下进行配置.此配置文件中的配置也无法保证一定和实际相符.故,只能是提供一个参考价值.
struct servent* getservbyname(
const char* servname, // 服务名
const char* protoname);// 服务所用协议
struct servent* getservbyport(
int port,// 服务端口号,需传递网络字节序的参数,可用htons
const char* protoname);// 服务所用协议
struct servent
{
char* s_name;// 服务名
char** s_aliases;// 别名列表
int s_port;// 服务端口号,以网络字节序表示.后续可直接使用
char* s_proto;// 服务所用协议
};