UNIX网络编程学习笔记-名字地址转换

DNS域名系统

        DNS中的条目被称为资源记录(resource record)

解析器和名字服务器

        每个组织机构有自己的名字服务器,运行名字解析服务,通过调用gethostbyname(www->ip)和gethostbyaddr(ip->www)来和DNS服务器进行接触

gethostbyname函数 

  ​原型:

extern struct hostent *gethostbyname (const char *__name);

功能:通过name参数得到IP

返回结构:

struct hostent
{
  char *h_name;			/* Official name of host.  */
  char **h_aliases;		/* Alias list.  */
  int h_addrtype;		/* Host address type.  */
  int h_length;			/* Length of address.  */
  char **h_addr_list;		/* List of addresses from name server.  */
#ifdef __USE_MISC
# define	h_addr	h_addr_list[0] /* Address, for backward compatibility.*/
#endif
};

gethostbyaddr函数     

 原型:

extern struct hostent *gethostbyaddr (const void *__addr, __socklen_t __len,
				      int __type);

功能:通过IP地址查找主机名

getserverbyname和getserverbyport函数

extern struct servent *getservbyname (const char *__name, const char *__proto);

返回的servent

struct servent
{
  char *s_name;			/* Official service name.  */
  char **s_aliases;		/* Alias list.  */
  int s_port;			/* Port number.  */
  char *s_proto;		/* Protocol to use.  */
};
extern struct servent *getservbyport (int __port, const char *__proto);

其中port参数必须为网络字节序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值