gethostbyname 函数如何获取自定义主机映射 IP 地址?
问:gethostbyname 函数如何获取自定义主机映射 IP 地址?
答:gethostbyname 函数可以通过主机名获取对应 IP 地址,因此我们可以在 /etc/hosts 文件中添加
自己定义的主机名以及对应的 IP 地址。
注:自定义主机名不要设置为 sylix 、 sylixos 等默认名称,这些默认名称都对应了 IP 127.0.0.1 ,因
此返回值不会是自己定义的IP地址。
以下为函数测试代码:
- #include <stdio.h>
- #include <netdb.h>
- #include <sys/socket.h>
- int main (int argc, char **argv)
- {
- struct hostent *host = gethostbyname("hi");
- if(!host){
- puts("Get IP address error!");
- system("pause");
- exit(0);
- }
- //别名
- int i=0;
- for(i=0; host->h_aliases[i]; i++){
- printf("Aliases %d: %s\n", i+1, host->h_aliases[i]);
- }
- //地址类型
- printf("Address type: %s\n", (host->h_addrtype==AF_INET) ? "AF_INET": "AF_INET6");
- //IP地址
- for(i=0; host->h_addr_list[i]; i++){
- printf("IP addr %d: %s\n", i+1, inet_ntoa( *(struct in_addr*)host->h_addr_list[i] ) );
- }
- return (0);
- }
以下为程序输出:
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“ 错误提示时,应先关闭杀毒软件和电脑管家,重试应能正常创建了。