91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux 獲取本機MAC/IP地址的方法

發布時間:2020-06-01 22:38:20 來源:網絡 閱讀:1182 作者:lsnpurdue 欄目:軟件技術

功能:查詢本機IP/MAC地址,過濾掉127.0.0.1 loop-back 地址

適用:linux, ubuntu 16.04 調試通過


#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <net/if.h>
#include <net/route.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <ifaddrs.h>



void getLocalMacIp()

{

    int i;
    int sock_mac;  
    char hname[128];
    struct hostent *hent;
    struct in_addr *paddr = 0;
    struct ifaddrs * ifAddrStruct=NULL;
    struct ifreq ifr_mac;
    void * tmpAddrPtr=NULL;

    struct ifreq buf[16];
    struct ifconf ifc;
    int interface_num;
    char nif_name[128] = {0};
    char addressBuffer[128];

    unsigned char macaddr[6] = {0};
    unsigned char *pFirstByte;
   
    //---------------------------------------------
    //get device IP address, discard loopback
    //---------------------------------------------
    gethostname(hname, sizeof(hname));

    hent = gethostbyname(hname);

    printf("[%s][%d] host: %s\n", __FILE__, __LINE__, hent->h_name);

    getifaddrs(&ifAddrStruct);

    while (ifAddrStruct!=NULL)
    {
        if (ifAddrStruct->ifa_addr->sa_family==AF_INET)
        {
            tmpAddrPtr = &((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
            pFirstByte = (unsigned char*)tmpAddrPtr;

            if(*pFirstByte != 127)
            {
                paddr = tmpAddrPtr;
                inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, 128);
                printf("[%s][%d] NIF %s address %s\n", __FILE__, __LINE__,
                    ifAddrStruct->ifa_name, addressBuffer);
                //---------------------------------------------
                //remember NIF name for future use
                //---------------------------------------------
                strcpy(nif_name, ifAddrStruct->ifa_name);
            }
            
        }
        
        ifAddrStruct=ifAddrStruct->ifa_next;
    }
    

    //---------------------------------------------
    //get device MAC address, discard loopback
    //---------------------------------------------
    sock_mac = socket( AF_INET, SOCK_DGRAM, 0 );

    if(sock_mac > 0)
    {
        ifc.ifc_len = sizeof(buf);
        ifc.ifc_req = buf;
        ioctl(sock_mac, SIOCGIFCONF, (char *)&ifc);

        interface_num = ifc.ifc_len / sizeof(struct ifreq);

        while(interface_num--)
        {
            if(nif_name[0] && strcmp(nif_name, buf[interface_num].ifr_name))
            {
                continue;
            }
            
            ioctl(sock_mac, SIOCGIFHWADDR, (char *)&buf[interface_num]);
            
            memcpy(macaddr, &buf[interface_num].ifr_hwaddr.sa_data[0], 6);
            
            //printf("NIF %s ", buf[interface_num].ifr_name);
            //printf("mac %02x:%02x:%02x:%02x:%02x:%02x \n",
            //    macaddr[0], macaddr[1], macaddr[2], macaddr[3], macaddr[4], macaddr[5]);
        }        
        
        close( sock_mac );   
    }
}

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合作市| 库尔勒市| 万安县| 邢台县| 芷江| 麟游县| 奇台县| 白水县| 武汉市| 大田县| 和顺县| 怀集县| 荔波县| 稻城县| 曲阳县| 汤阴县| 和林格尔县| 兴业县| 清水县| 民权县| 广元市| 城市| 准格尔旗| 泸西县| 弥勒县| 沙洋县| 武邑县| 陵川县| 通渭县| 普兰县| 利津县| 铜陵市| 肃宁县| 庄浪县| 定南县| 衡水市| 大方县| 茌平县| 临潭县| 湖南省| 高邑县|