<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    嵌入式 hi3518平臺獲取網絡環境中的ip、netmask、broadcast等信息

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接 [html] view plain copy    在CODE上查看代碼片派生到我的代碼片
    1. <span style="font-family:Courier New;">  
    2. /********************************** (C) COPYRIGHT *******************************  
    3.  * File Name          : get_netinfo.c  
    4.  * Author              : skdkjzz  
    5.  * Date                 : 2014/08/07  
    6.  * Description        : linux下獲取網卡信息  
    7.  *********************************************************************************/  
    8.   
    9. #include <stdio.h>  
    10. #include <stdlib.h>  
    11. #include <string.h>  
    12. #include <sys/types.h>  
    13. #include <sys/socket.h>  
    14. #include <netinet/in.h>  
    15. #include <linux/if.h>  
    16. #include <arpa/inet.h>  
    17. #include <linux/sockios.h>  
    18.   
    19. int main(int argc,char*argv[]){  
    20.     int s;  
    21.     int err;  
    22.     s=socket(AF_INET,SOCK_DGRAM,0);  
    23.     if(s<0){  
    24.         perror("socket error");  
    25.         return;  
    26.     }  
    27.   
    28.     struct ifreq ifr;  
    29. #if 1  
    30.     memset(&ifr,0,sizeof(ifr));  
    31.     ifr.ifr_ifindex=1;    /* 獲得第1個網絡接口的名稱 */  
    32.   
    33.     err=ioctl(s,SIOCGIFNAME,&ifr);  
    34.     if(err)  
    35.     {  
    36.         perror("index error");  
    37.     }else  
    38.     {  
    39.         printf("----------------------------------\n");  
    40.         printf("The %dst net device is : %s\n",ifr.ifr_ifindex,ifr.ifr_name);  
    41.     }  
    42.   
    43.     err=ioctl(s,SIOCGIFHWADDR,&ifr);   /* 獲得MAC地址 */  
    44.     printf("%s:[%d] err is %d\n",__FUNCTION__,__LINE__,err);  
    45.     if(!err)  
    46.     {  
    47.         unsigned char* hw=ifr.ifr_hwaddr.sa_data;  
    48.         printf("Mac address is : %02x:%02x:%02x:%02x:%02x:%02x\n",hw[0],hw[1],hw[2],hw[3],hw[4],hw[5]);  
    49.     }  
    50.     else  
    51.     {  
    52.         printf("Mac address is : 00:00:00:00:00:00\n");  
    53.     }  
    54.   
    55.     struct sockaddr_in *sin=(struct sockaddr_in*)&ifr.ifr_addr; /* 獲取網絡接口IP保存的是二進制IP */  
    56.     char ip[16];   /* 字符數組,存放字符串 */  
    57.     memset(ip,0,16);  
    58.     err=ioctl(s,SIOCGIFADDR,&ifr);  
    59.     if(!err)  
    60.     {  
    61.         inet_ntop(AF_INET,&sin->sin_addr.s_addr,ip,16);  /* 轉換的字符串保存到ip數組中,第二個參數是要轉換的二進制IP指針,第三個參數是轉換完成存放IP的緩沖區,最后一個參數是緩沖區的長度 */  
    62.         printf("IP address is : %s\n",ip);  
    63.     }else  
    64.     {  
    65.         printf("IP address is : 0.0.0.0\n");  
    66.     }  
    67.   
    68.     err=ioctl(s,SIOCGIFBRDADDR,&ifr);   /* 得到接口的廣播地址 */  
    69.     if(!err)  
    70.     {  
    71.         struct sockaddr_in *broadcast=(struct sockaddr_in*)&ifr.ifr_broadaddr;  
    72.   
    73.         inet_ntop(AF_INET,&broadcast->sin_addr.s_addr,ip,16); /* 轉換成字符串,inet_ntop將二進制IP轉換成點分十進制的字符串 */  
    74.         printf("BROADCAST IP is : %s\n",ip);  
    75.     }else  
    76.     {  
    77.         printf("BROADCAST IP is : 0.0.0.0\n",ip);  
    78.     }  
    79.     printf("----------------------------------\n");  
    80.   
    81. #else  
    82.   
    83.     memset(&ifr,0,sizeof(ifr));  
    84.     ifr.ifr_ifindex=2;  /* 獲得第2個網絡接口的名稱 */  
    85.   
    86.     err=ioctl(s,SIOCGIFNAME,&ifr);  
    87.     memcpy(ifr.ifr_name,argv[1],5);  
    88.     if(err){  
    89.         perror("index error");  
    90.     }else{  
    91.         printf("The %dst net device is : %s\n",ifr.ifr_ifindex,ifr.ifr_name);  
    92.     }  
    93.   
    94.   
    95.     err=ioctl(s,SIOCGIFHWADDR,&ifr);  /* 獲得MAC地址 */  
    96.     if(!err){  
    97.         unsigned char* hw=ifr.ifr_hwaddr.sa_data;  
    98.         printf("Mac address is : %02x:%02x:%02x:%02x:%02x:%02x\n",hw[0],hw[1],hw[2],hw[3],hw[4],hw[5]);  
    99.     }else{  
    100.         printf("Mac address is : 00:00:00:00:00:00\n");  
    101.     }  
    102.   
    103.     sin=(struct sockaddr_in*)&ifr.ifr_addr;  
    104.     memset(ip,0,16);  
    105.     err=ioctl(s,SIOCGIFADDR,&ifr);  
    106.     if(!err){  
    107.         inet_ntop(AF_INET,&sin->sin_addr.s_addr,ip,16);  
    108.         printf("IP address is : %s\n",ip);  
    109.     }else{  
    110.         printf("IP address is : 0.0.0.0\n");  
    111.     }  
    112.   
    113.     err=ioctl(s,SIOCGIFBRDADDR,&ifr);  /* 得到接口的廣播地址 */  
    114.     if(!err){  
    115.         struct sockaddr_in *broadcast=(struct sockaddr_in*)&ifr.ifr_broadaddr;  
    116.         inet_ntop(AF_INET,&broadcast->sin_addr.s_addr,ip,16);/* 轉換成字符串,inet_ntop將二進制IP轉換成點分十進制的字符串 */  
    117.         printf("BROADCAST IP is : %s\n",ip);  
    118.     }else{  
    119.         printf("BROADCAST IP is : 0.0.0.0\n",ip);  
    120.     }  
    121. #endif  
    122.   
    123.     printf("----------------------------------\n");  
    124.     close(s);  
    125.       
    126. }  
    127. </span>  
    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全