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

linux下获得网卡的IP地址

2013-02-21 14:56 381 查看
#include <stdio.h>

#include <string.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <sys/ioctl.h>

#include <netinet/in.h>

#include <net/if.h>

#include <net/if_arp.h>

#include <arpa/inet.h>

#include <errno.h>

void getHostIp(char* netDev, char*ipaddress)

{

int sock;

struct sockaddr_in sin;

struct ifreq ifr;

sock = socket(AF_INET, SOCK_DGRAM, 0);

if (sock == -1)

{

perror("socket");

//return -1;

}

strncpy(ifr.ifr_name, netDev, IFNAMSIZ);

ifr.ifr_name[IFNAMSIZ - 1] = 0;

if (ioctl(sock, SIOCGIFADDR, &ifr) < 0)

{

perror("ioctl");

//return -1;

}

memcpy(&sin, &ifr.ifr_addr, sizeof(sin));

sprintf(ipaddress, "%s", inet_ntoa(sin.sin_addr));

//return sin.sin_addr;

//return 0;

}

void main()

{

char ipaddress[16];

getHostIp((char *)"eth0", ipaddress);

printf("ip=%s\n", ipaddress);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: