博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gethostbyname和gethostbyaddr的用法
阅读量:4028 次
发布时间:2019-05-24

本文共 1076 字,大约阅读时间需要 3 分钟。

ubuntu 主机名

使用下面的命令来查看当前主机的主机名称:
sudo /bin/hostname
或者:
hostname
使用下面的命令来设置当前主机的主机名称:
sudo /bin/hostname newname
要永久重设主机名则需手工修改/etc/hostname文件。
 刚刚在做域名解析那,对这稍微有所了解,把刚刚的一点心得整理了下,共享之。

先看下这个函数: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();

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

转载地址:http://ytpbi.baihongyu.com/

你可能感兴趣的文章
IDEA Properties中文unicode转码问题
查看>>
Idea下安装Lombok插件
查看>>
zookeeper
查看>>
Idea导入的工程看不到src等代码
查看>>
技术栈
查看>>
Jenkins中shell-script执行报错sh: line 2: npm: command not found
查看>>
8.X版本的node打包时,gulp命令报错 require.extensions.hasownproperty
查看>>
Jenkins 启动命令
查看>>
Maven项目版本继承 – 我必须指定父版本?
查看>>
Maven跳过单元测试的两种方式
查看>>
通过C++反射实现C++与任意脚本(lua、js等)的交互(二)
查看>>
利用清华镜像站解决pip超时问题
查看>>
[leetcode BY python]1两数之和
查看>>
微信小程序开发全线记录
查看>>
Centos import torchvision 出现 No module named ‘_lzma‘
查看>>
网页设计里的浮动 属性
查看>>
Maximum Subsequence Sum
查看>>
PTA:一元多项式的加乘运算
查看>>
CCF 分蛋糕
查看>>
解决python2.7中UnicodeEncodeError
查看>>