您的位置:首页 > 运维架构 > Linux

linux获取接口IP的方法

2009-08-15 11:29 489 查看
#include <stdio.h>
#include <unistd.h>
#include <apra/inet.h>
#include <sys/ioctl.h>
#include <sys/socket.h>

#define IFNAMSIZ 16

struct ifreq {
char ifr_name[IFNAMSIZ]; // interface name, e.g., "eth0"
union {
struct sockaddr ifru_addr;
struct sockaddr ifru_dstaddr;
struct sockaddr ifru_broadaddr;
short ifru_flags;
int ifru_metric;
caddr_t ifru_data;
} ifr_ifru;
};

unsigned long do_ioctl_get_ipaddress(char *dev)
{
struct ifreq ifr;
int fd;
unsigned long ip;
struct in_addr tmp_addr;

strcpy(ifr.ifr_ifru.ifr_name, dev);
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (ioctl(fd, SIOCGIFADDR, &ifr)) {
perror("ioctl error");
return 0;
}
close(fd);
memcpy(&ip,ifr.ifr_addr.sa_data + 2,4);
tmp_addr.s_addr=ip;
printf("%s : %s\n", dev, inet_ntoa(tmp_addr));
return ip;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: