zoukankan      html  css  js  c++  java
  • linux获得本地IP

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <linux/types.h>
    #include <string.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <net/if.h>
    #include <netdb.h>
    #include <arpa/inet.h>
    #include <sys/ioctl.h>
    #include <iostream>
    using namespace std;

    //获取地址
    //返回IP地址字符串
    //返回:0=成功,-1=失败
    int getlocalip(char* outip)
    {
     int i = 0;
     int sockfd;
     struct ifconf ifconf;
     char buf[512];
     struct ifreq *ifreq;
     char* ip;
     //初始化ifconf
     ifconf.ifc_len = 512;
     ifconf.ifc_buf = buf;

     if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
     {
      return -1;
     }
     ioctl(sockfd, SIOCGIFCONF, &ifconf); //获取所有接口信息
     close(sockfd);
     //接下来一个一个的获取IP地址
     ifreq = (struct ifreq*) buf;
     for (i = (ifconf.ifc_len / sizeof(struct ifreq)); i > 0; i--)
     {
      ip = inet_ntoa(((struct sockaddr_in*) &(ifreq->ifr_addr))->sin_addr);

      if (strcmp(ip, "127.0.0.1") == 0)
      {
       ifreq++;
       continue;
      }
      strcpy(outip, ip);
      return 0;
     }
     return -1;
    }
    //——————————-函数的调用方式————————————-

    int main(int argc, char** argv)
    {
     char ip[20];
     if(getlocalip(ip)==0)
     {
      cout << "本机IP地址是:" << ip;
     }
     else
     {
      cout << "无法获得本地IP地址" << endl;
     }
     getchar();
     return 0;
    }

  • 相关阅读:
    React 懒加载组件
    按键精灵Q语言基础
    zookeeper安装和配置(单机+伪集群+集群)
    hbase-site.xml 配置详解
    MySQL主从复制与读写分离概念及架构分析
    mysql 主从复制原理
    Struts2教程
    广告点击率预测(CTR) —— 在线学习算法FTRL的应用
    搭建git服务器
    git常用命令
  • 原文地址:https://www.cnblogs.com/byfei/p/3112285.html
Copyright © 2011-2022 走看看