在Linux环境下,使用C语言获取本机的IP地址可以通过以下步骤实现:
192.168.1.1
。2001:db8::1
。以下是一个简单的C语言程序,用于获取本机的IPv4地址:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
int get_local_ip(char *ip) {
int sockfd;
struct sockaddr_in sin;
struct ifreq ifr;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd == -1) {
perror("socket");
return -1;
}
strncpy(ifr.ifr_name, "eth0", IFNAMSIZ); // 使用eth0接口,根据实际情况修改
ifr.ifr_name[IFNAMSIZ - 1] = '\0';
if (ioctl(sockfd, SIOCGIFADDR, &ifr) == 0) {
memcpy(&sin, &ifr.ifr_addr, sizeof(sin));
strcpy(ip, inet_ntoa(sin.sin_addr));
} else {
perror("ioctl");
close(sockfd);
return -1;
}
close(sockfd);
return 0;
}
int main() {
char ip[16];
if (get_local_ip(ip) == 0) {
printf("Local IP: %s\n", ip);
} else {
printf("Failed to get local IP.\n");
}
return 0;
}
sudo
命令执行或者在程序中请求提升权限。eth0
, wlan0
等)。AF_INET6
和相关IPv6结构体。通过以上步骤和代码示例,可以在Linux环境下使用C语言获取本机的IP地址。
领取专属 10元无门槛券
手把手带您无忧上云