总结两种获取本地IP地址的方法

第一种:C++代码

CmdExe.h

class CmdExc
{public:CmdExc(std::string cmd, std::string mode = "rt");~CmdExc();std::string getOutput() const;std::string getLocalIP(std::string ipconfig_content);
private:std::string m_strOutput__;FILE* m_fp__;
};

CmdExe.cpp

CmdExc::CmdExc(std::string cmd, std::string mode)
{m_fp__ = _popen(cmd.c_str(), mode.c_str());char buf[256] = { 0 };if (NULL != m_fp__) {int read_len;while ((read_len = fread(buf, sizeof(buf) - 1, 1, m_fp__)) > 0) {m_strOutput__ += buf;memset(buf, 0, sizeof(buf));}}}CmdExc::~CmdExc()
{if (NULL != m_fp__) {_pclose(m_fp__);}
}std::string CmdExc::getOutput() const
{return m_strOutput__;
}void trimstring(std::string& str)
{if (!str.empty()){str.erase(0, str.find_first_not_of(" "));str.erase(str.find_last_not_of(" ") + 1);}
}std::string CmdExc::getLocalIP(std::string strIpconfig_content)
{std::string ip("127.0.0.1");auto p = strIpconfig_content.find("IPv4");//查找字符串中第1个出现的"IPv4"if (p != std::string::npos){auto p2 = strIpconfig_content.find(":", p);if (p2 != std::string::npos){auto p3 = strIpconfig_content.find("\n", p2);if (p3 != std::string::npos){ip = strIpconfig_content.substr(p2 + 1, p3 - p2 - 1);trimstring(ip);}}}return ip;
}

第二种:QT代码

#include <Qprocess>QString getLocalIP()
{QString strIpAddress{"127.0.0.1"};QProcess cmd_pro;QString cmd_str = QString("ipconfig");cmd_pro.start("cmd.exe", QStringList() << "/c" << cmd_str);cmd_pro.waitForStarted();cmd_pro.waitForFinished();QString result = cmd_pro.readAll();QString pattern("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}");QRegExp rx(pattern);int pos = 0;bool found = false;while ((pos = rx.indexIn(result, pos)) != -1) {QString tmp = rx.cap(0);//跳过子网掩码 eg:255.255.255.0if (-1 == tmp.indexOf("255")) {if (strIpAddress != "" && -1 != tmp.indexOf(strIpAddress.mid(0, strIpAddress.lastIndexOf(".")))) {found = true;break;}strIpAddress = tmp;}pos += rx.matchedLength();}return strIpAddress;
}
int main()
{//第一种CmdExc cmd("ipconfig");std::string strIpconfig_content = cmd.getOutput().c_str();std::string strIP = cmd.getLocalIP(strIpconfig_content);//第二种//QString strIP = getLocalIP();return 0;
}

Windows下获取本地IP地址的两种方法相关推荐

  1. android 获取wifi的ip地址吗,Android开发实现在Wifi下获取本地IP地址的方法

    本文实例讲述了Android开发实现在Wifi下获取本地IP地址的方法.分享给大家供大家参考,具体如下: 代码核心介绍: WifiManager类提供了对设备Wifi功能的管理,包括Wifi开关的打开 ...

  2. Android手机获取IP地址的两种方法

    Android手机获取IP地址的两种方法 本文章讲解了WIFI和GPRS两种情况下获取手机IP地址的方法 1.使用WIFI 1,首先设置用户权限 AndroidManifest.xml添加: < ...

  3. android获取ip方法,Android开发准确获取手机IP地址的两种方式

    最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下获取ip地址的两种方式. 比如微信支付,后台在做接口的时候,要求App端传入IP地址,我们需要判断是网络环境,WI-FI还是3G, ...

  4. c# 获得本地ip地址的三种方法

    网上有很多种方法可以获取到本地的IP地址.一线常用的有这么些: 枚举本地网卡 using System.Net.NetworkInformation; using System.Net.Sockets ...

  5. php获取ip几种方法区别,php获取客户端IP地址的几种方法

    php获取客户端IP地址的几种方法 阅读php获取客户端IP地址的几种方法, 1:来看看代码: echo "(1)浏览当前页面的用户的 IP 地址为:"; echo $_SERVE ...

  6. php获取客户端IP地址的几种方法(转)

    php获取客户端IP地址的几种方法方法一 <?php $iipp=$_SERVER["REMOTE_ADDR"]; echo $iipp; ?>方法二<?php ...

  7. android ip查看工具,安卓手机查看IP地址的两种方法

    无论是电脑链接宽带上网还是手机链接wifi上网,当我们在链接网络后,会自动分配一个独立的IP地址,对于电脑端的上网IP地址我们可通过ipconfig/all命令来查看,那么如果在手机端的话应该如何查看 ...

  8. android查ip地址,安卓手机查看IP地址的两种方法,  二、进入手机状态

    安卓手机查看IP地址的两种方法, 二.进入手机状态 无论是电脑链接宽带上网还是手机链接wifi上网,当我们在链接网络后,会自动分配一个独立的IP地址,对于电脑端的上网IP地址我们可通过ipconfig ...

  9. windows下tomcat集群配置(两种方法)

    两种方法只是在配置上不同原理一样,因为apache2.X后其自身集成了mod_jk功能,相对于1.3版本,不需要再进行繁琐的worker.properties配置,配置过程大幅简化. 一.软件需求 操 ...

  10. php获取访问者ip地址,PHP获取访问者IP地址的二种方法

    本节内容: PHP获取访问者IP地址 方法一:$_SERVER['HTTP_X_FORWARDED_FOR']来获取相应的地址 复制代码 代码示例: function get_onlineip() { ...

最新文章

  1. opencv-python 视频处理之时光倒流
  2. scala简单学习---1
  3. [论文阅读] (11)ACE算法和暗通道先验图像去雾算法(Rizzi | 何恺明老师)
  4. 同理心案例及故事分享_神经形态,视觉可及性和同理心
  5. Oracle常用存储过程写法
  6. 荣耀x10max能不能升级为鸿蒙,荣耀X10 Max即将亮相:容量很“放肆” 身材却很“克制”...
  7. 百度进军游戏;腾讯起诉抄袭者;苹果急撤 watchOS 5.1 更新 | 极客头条
  8. 如何设置tomcat定时自动重启
  9. Vue折腾记 - (2)写一个不大靠谱的面包屑组件
  10. 使用CAFFE训练自己的数据集并单张图片测试的方法
  11. matlab2017b 破解
  12. 数据机房温湿度检测物联网以太网传感器解决方案
  13. 个人独资有限公司章程模板
  14. https://blog.csdn.net/sxf359/article/details/71082404
  15. java做度量衡换算器_简易单位换算器_度量衡单位转换
  16. Python实现逆Radon变换——直接反投影和滤波反投影
  17. 如何使用正则表达式?
  18. 生成新浪短地址 php,生成新浪的短链接和还原新浪短链接类(方法)总结
  19. 韩国程序员面试考什么?
  20. 英语发音规则---V字母

热门文章

  1. 拼多多秒杀活动的谣言
  2. 小米路由器 mini 有线中继设置教程
  3. 【转】JavaScript面向对象程序设计(6): 封装
  4. 表格中复制后出现空格_尝过廉江这个美食后,已经连续3天出现在下午茶名单中!...
  5. 2021CCPC东北四省赛 K. City 并查集
  6. 4.7/4.8 磁盘挂载
  7. 使用echarts-gl 绘制3D地球配置详解
  8. 数论--P8845 [传智杯 #4 初赛] 小卡和质数
  9. 淘宝API-item_search - 按关键字搜索淘宝商品
  10. 三月写给沉默王二的一封道歉信