gpengtao的专栏

全世界有那么多的人在琢磨计算机,你能在什么地方比其他人都更进一步呢。...

ioctl()函数获取本机IP、MAC
#include <sys/ioctl.h>
int ioctl(int d, int request, ...);
/* Socket configuration controls. */
#define SIOCGIFADDR 0x8915    /* get PA address */
#define SIOCSIFADDR 0x8916    /* set PA address */
#define SIOCGIFHWADDR 0x8927  /* Get hardware address */
struct ifreq,Interface request structure,在头文件<net/if.h>

#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <sys/ioctl.h>
#include <net/if.h>

int main()
{
    int sock;
    int res;
    struct ifreq ifr;

    sock = socket(AF_INET, SOCK_STREAM, 0);
    strcpy(ifr.ifr_name, "eth0");
    res = ioctl(sock, SIOCGIFADDR, &ifr);

    printf("IP: %s\n",inet_ntoa(((struct sockaddr_in*)&ifr.ifr_addr)->sin_addr));

    strcpy(ifr.ifr_name, "eth0");
    res = ioctl(sock, SIOCGIFHWADDR, &ifr);

    int i;
    char mac[32];
    for(i = 0; i < 6; ++i)
    {
        sprintf(mac + 3*i, "%02x:", (unsigned char)ifr.ifr_hwaddr.sa_data[i]);
    }
    printf("MAC: %s\n",mac);

    return 0;
}


阅读更多
个人分类: Linux & Unix
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

ioctl()函数获取本机IP、MAC

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭