gethostbyname 函数如何获取自定义主机映射 IP 地址?

gethostbyname 函数如何获取自定义主机映射 IP 地址?

问:gethostbyname 函数如何获取自定义主机映射 IP 地址?

答:gethostbyname 函数可以通过主机名获取对应 IP 地址,因此我们可以在 /etc/hosts 文件中添加
自己定义的主机名以及对应的 IP 地址。


注:自定义主机名不要设置为 sylix 、 sylixos 等默认名称,这些默认名称都对应了 IP 127.0.0.1 ,因
此返回值不会是自己定义的IP地址。

以下为函数测试代码:
  1. #include <stdio.h>
  2. #include <netdb.h>
  3. #include <sys/socket.h>
  4. int main (int argc, char **argv)
  5. {
  6.     struct hostent *host = gethostbyname("hi");
  7.     if(!host){
  8.         puts("Get IP address error!");
  9.         system("pause");
  10.         exit(0);
  11.     }
  12.     //别名
  13.     int i=0;
  14.     for(i=0; host->h_aliases[i]; i++){
  15.         printf("Aliases %d: %s\n", i+1, host->h_aliases[i]);
  16.     }
  17.     //地址类型
  18.     printf("Address type: %s\n", (host->h_addrtype==AF_INET) ? "AF_INET": "AF_INET6");
  19.     //IP地址
  20.     for(i=0; host->h_addr_list[i]; i++){
  21.         printf("IP addr %d: %s\n", i+1, inet_ntoa( *(struct in_addr*)host->h_addr_list[i] ) );
  22.     }

  23.     return  (0);
  24. }
以下为程序输出:


    • Related Articles

    • 如何在 SylixOS 中获取地址

      1、获取内核内存布局 BSP 的内存布局在链接脚本已经固化。可以参考 BSP 工程中对应链接文件,例如: 上图中可查出 TEXT 段和 DATA 段的基地址,分别为: TEXT 0x10000000; DATA 0x10600000; 2、获取内核模块基地址 1、使用 modules 命令(内核模块) BASE 列为内存起始, SIZE 列为模块占用的内存大小。 2、使用程序获取 以下函数可根据文件路径获取模块内存。 LW_API INT API_ModuleGetBase(pid_t pid, ...
    • Linux工程移植笔记-基于arping案例

      1. arping简介 arp(Address Resultion Protocol)地址解析协议,是通过解析网络层地址来找寻数据链路层地址。 ...
    • SylixOS 如何配置 IP 地址?

      (1) 使用 ifconfig 命令进行配置(临时配置,重启无效) 可手动创建 shell 脚本 /etc/startup.sh,并写入 ifconfig 配置(脚本生效,重启有效) ifconfig [ifname] [{inet | netmask | gateway}] [address] eg: ifconfig en1 inet 192.168.0.3 ifconfig en1 netmask 255.255.255.0 ifconfig en1 gateway 192.168.0.1 ...
    • 如何配置网卡的默认网关到附加的 IP 地址上

      Q:如何配置网卡的默认网关到附加的 IP 地址上? 使用 ifmip 命令给指定网卡添加 IP 地址后,会生成 "mi" 开头的虚拟网卡。若只用 ifconfig 配置 "mi" 网卡的网关地址, SylixOS 是无法通过配置的网关,访问外部 IP 地址的。需要再进行路由表配置,将默认网关切换至 "mi" 网卡。 这里进行设置的举例: ifmip en1 add 192.168.1.101 255.255.255.0 该步骤在 en1 网卡上添加额外 IP ...
    • Failed to setting the IP address of ethernet

      Q:在硬件仿真器中创建网络适配器时,无法设置 IP 地址? 在硬件仿真器中创建网络适配器时,无法设置 IP 地址,报如下图所示错误         通过多种方式排查后,发现是杀毒软件和电脑管家的问题,因此,当出现 “Failed to setting the IP address of ethernet“ 错误提示时,应先关闭杀毒软件和电脑管家,重试应能正常创建了。