linux ip获取mac,linux C获取机器MAC及IP的两个函数

[文章作者:陈臻 本文版本:v1.0 最后修改:2006.10.25 转载请注明原文链接:http://www.54chen.com/c/28]

以下两函数分别将mac ip通过memcpy至mac_addr和ip_addr

char *

get_mac()

{

int nSocket;

struct ifreq struReq;

nSocket = socket(PF_INET,SOCK_STREAM,0);

memset(&struReq,0,sizeof(struReq));

strncpy(struReq.ifr_name, "eth0", sizeof(struReq.ifr_name));

ioctl(nSocket,SIOCGIFHWADDR,&struReq);

close(nSocket);

memcpy(mac_addr,(char *)ether_ntoa(struReq.ifr_hwaddr.sa_data),strlen((char

*)ether_ntoa(struReq.ifr_hwaddr.sa_data)));

return 0;

}

char *

get_ip()

{

int sock;

struct sockaddr_in sin;

struct ifreq ifr;

sock = socket(AF_INET, SOCK_DGRAM, 0);

if (sock == -1)

{

perror("socket");

return "";

}

strncpy(ifr.ifr_name, "eth0", sizeof(ifr.ifr_name));

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

{

perror("ioctl");

return "";

}

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

close(sock);

memcpy(ip_addr,inet_ntoa(sin.sin_addr),strlen(inet_ntoa(sin.sin_addr)));

return "";

}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部