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环境测试通过。

你可能感兴趣的:(网络,struct,list,测试,XP,null)