zoukankan      html  css  js  c++  java
  • 利用ioctl获取本地ip地址

    linux下利用ioctl函数与struct ifreq结构体可以获取本地的ip地址等信息。

    ioctl函数原型:int ioctl( int fd, int request, .../* void *arg */ );

    第二个参数为相关的动作。

    获取本地ip的代码如下(同理可获得其他的接口信息)

      1 #include<stdio.h>
      2 #include<arpa/inet.h>   //for inet_ntoa , struct sockaddr_in
      3 #include<unistd.h>
      4 #include<sys/ioctl.h>
      5 #include<sys/socket.h>  
      6 #include<net/if.h>      //for struct ifreq
      7 #include<string.h>      
      8 int main(void){
      9         int sockfd;
     10         struct ifreq ifr;
     11         struct sockaddr_in sin;
     12         if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0){
     13                 perror("socket error");
     14                 return -1;
     15         }       
     16         strcpy(ifr.ifr_name,"eth0");
     17         if(ioctl(sockfd,SIOCGIFADDR,&ifr)<0){ //get eth0 ip
     18                 perror("ioctl error");
     19                 return -1;
     20         }       
     21         memcpy(&sin,&ifr.ifr_addr,sizeof(sin));
     22         //sin=(struct sockaddr_in)ifr.ifr_addr;
     23         printf("ip is %s\n",inet_ntoa(sin.sin_addr));
     24         return 0;
     25 }       
    
  • 相关阅读:
    iOS中图片与视频一次性多选
    UIImagePickerController Class
    1月16日
    10月20日
    1月14日
    1月13日
    1月12日
    1月11日
    课程评价与建议
    加分总结
  • 原文地址:https://www.cnblogs.com/aLittleBitCool/p/2092569.html
Copyright © 2011-2022 走看看