gethostbyname和gethostbyaddr的用法

   刚刚在做域名解析那,对这稍微有所了解,把刚刚的一点心得整理了下,共享之。

先看下这个函数:gethostbyname

struct hostent *gethostbyname(const char *name);
功能:根据域名或者主机名获取IP地址。

返回值:一个hostent的结构。如果函数调用失败,将返回NULL

那看下这结构

struct hostent
{
  char  *h_name;            //表示的是主机的规范名
  char  **h_aliases;        //表示的是主机的别名
  int   h_addrtype;          //IP地址的类型
  int   h_length;             //IP地址的长度
  char  **h_addr_list;     //主机的ip地址   注意这是以网络字节顺序保存的一个值
};

 

例子:

   CString  m_strName(www.loadcom.com);

   HOSTENT* hst=NULL;
   CString strTemp;
   struct in_addr ia;
   CString m_strIP="";
   hst = gethostbyname((LPCTSTR)m_strName);

    for(int i=0;hst->h_addr_list[i];i++){
        memcpy(&ia.s_addr,hst->h_addr_list[i],sizeof(ia.s_addr));
        strTemp.Format("%s/n",inet_ntoa(ia));
  m_strIP+=strTemp;
    }
 

 

先看下这个函数:gethostbyaddr

struct hostent *gethostbyaddr(const char *name,int len,int type)

传入值是IP地址(注意,这里不是简单的字符串,这是网络字节顺序的),然后经过函数处理,将结果由返回值传出。

例子:

 DWORD dwIPAddr ; 
 dwIPAddr = inet_addr("192.168.4.111"); 
 HOSTENT* hst = NULL;
 hst = gethostbyaddr((LPSTR)&dwIPAddr,4,AF_INET);

 

 

以上代码在XP系统,VC6.0环境测试通过。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值