bash,hostname -I,
“这个命令会返回服务器的所有网络接口的IP地址。
在C语言中,获取当前服务器的IP地址是一个常见的需求,尤其是在网络编程和系统管理中,下面将详细介绍如何在Linux环境下使用C语言获取本机的IP地址。
方法一:使用gethostname和gethostbyname函数
1、包含必要的头文件
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <netinet/in.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netdb.h>
2、定义主函数
int main() { char hostname[1024]; struct hostent host_entry; char ipbuffer; // 获取主机名 if (gethostname(hostname, sizeof(hostname)) { perror("gethostname"); exit(EXIT_FAILURE); } // 通过主机名获取主机信息 host_entry = gethostbyname(hostname); if (host_entry == NULL) { perror("gethostbyname"); exit(EXIT_FAILURE); } // 将IP地址转换为字符串形式 ipbuffer = inet_ntoa(((struct in_addr)host_entry->h_addr_list[0])); printf("IP Address: %s ", ipbuffer); return 0; }
3、编译和运行
gcc -o get_ip get_ip.c ./get_ip
1、包含必要的头文件
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <net/if.h> #include <sys/ioctl.h>
2、定义主函数
int main() { int fd; struct ifreq ifr; char iface = "eth0"; // 指定网络接口,quot;eth0"或"wlan0" char ip[INET_ADDRSTRLEN]; // 创建套接字 fd = socket(AF_INET, SOCK_DGRAM, 0); if (fd < 0) { perror("socket"); exit(EXIT_FAILURE); } // 获取IP地址 strncpy(ifr.ifr_name, iface, IFNAMSIZ-1); ifr.ifr_name[IFNAMSIZ-1] = '