获取本机内网、外网ip(C++)<转>
- 基础知识
- 电脑在局域网内,通过网关/路由器连接到Internet则ip分为内网ip、外网ip。通过ipconfig得到的为局域网ip。
- 电脑直接拨号连接等,则本机通过ipconfig得到的就是外网ip。
- 代码
//Get IP
int GetLocalIP(std::string &local_ip);
int GetInternetIP(std::string &Inernet_ip);
int GetLocalIP( std::string &local_ip )
{
WSADATA wsaData = {};
if (WSAStartup(MAKEWORD(, ), &wsaData) != )
return kErrorWSAStartup;
char szHostName[MAX_PATH] = {};
int nRetCode;
nRetCode = gethostname(szHostName, sizeof(szHostName));
PHOSTENT hostinfo;
if (nRetCode != )
return WSAGetLastError();
hostinfo = gethostbyname(szHostName);
local_ip = inet_ntoa(*(struct in_addr*)*hostinfo->h_addr_list);
WSACleanup();
return ;
} int GetInternetIP( std::string &Inernet_ip )
{
Inernet_ip.resize();
TCHAR szTempPath[_MAX_PATH] = {}, szTempFile[MAX_PATH] = {};
std::string buffer;
GetTempPath(MAX_PATH, szTempPath);
UINT nResult = GetTempFileName(szTempPath, _T("~ex"), , szTempFile);
int ret=URLDownloadToFile(NULL,_T("http://www.ip138.com/ip2city.asp"),szTempFile,BINDF_GETNEWESTVERSION,NULL);
if (ret == S_FALSE)
return ;
FILE *fp;
if (_wfopen_s(&fp,szTempFile,_T("rb"))!=){
return ;
}
fseek(fp,,SEEK_END);//得到文件大小
int ilength=ftell(fp);
fseek(fp,,SEEK_SET);
if(ilength>)
{
buffer.resize(ilength);
fread(&buffer[],sizeof(TCHAR),ilength,fp);
fclose(fp);
DeleteFile(_T("ip.ini")); char* str_ip = strstr(&buffer[], "[");
if (str_ip !=NULL)
{
sscanf_s(str_ip+, "%[^]]", &Inernet_ip[], );
}
return ;
}
else
{
fclose(fp);
return ;
}
}
- 解释
获取外网ip所需要的IP源:(几乎所有可以显示IP地址的网页都可以成为IP源)
http://www.ipchicken.com/
http://whatismyipaddress.com/
http://www.ip138.com/ip2city.asp
转载地址:https://blog.csdn.net/xiaolengzile/article/details/41868989
获取本机内网、外网ip(C++)<转>的更多相关文章
- C#获取本机内网外网IP
using System.Net; # region 获取内.外网Ip /// <summary> /// 获取本地ip地址,优先取内网ip /// </summary> pu ...
- Android根据内网外网连接情况配置服务器访问IP
新项目的app,可通过内网和外网的服务器ip进行请求访问,但是客户提供了专业终端,终端在wifi情况下走外网内网都可以,但关闭wifi则只能走4G专网,也就是只能走内网. 可前往我的小站查看:Andr ...
- 虚机中访问外网;NAT中的POSTROUTING是怎么搞的?
看下docker中是怎么配置的网络 在虚机中访问外网:设定了qemu,在主机上添加路由:sudo iptables -t nat -I POSTROUTING -s 192.168.1.110 -j ...
- [转] 如何设置双网卡同时连接内网外网_bpao_新浪博客
已剪辑自: http://blog.sina.com.cn/s/blog_5d3e229c0100skwe.html 如何设置双网卡同时连接内网外网 . 通过无线网络连接外网,确保连接成功后开始第二步 ...
- win10内网外网智能访问
当电脑同时连接有线和WiFi时(有线连接为内网,WiFi为外网),会出现内网和外网内容无法同时访问的情况. 本方法实现内网和外网的同时访问. 第一步: 输入指令 “route print ” 查看路由 ...
- Ubuntu16.04双网卡配置,内网外网同时访问
Ubuntu16.04双网卡配置,内网外网同时访问 配置:vim/etc/network/interface auto lo iface lo inet loopback auto eno1 ifac ...
- nginx反向代理下thinkphp、php获取不到正确的外网ip
在记录用户发送短信需要获取用户ip时,tp一直获取的是内网ip:10.10.10.10 tp框架获取ip方法:get_client_ip /** * 获取客户端IP地址 * @param intege ...
- Java 获取CPU、内存、外网IP等硬件信息
import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.Input ...
- 配置windows路由表,使电脑同时连接内网外网方法
1.环境一(系统:windows xp,内网.外网不是同一类地址,内网地址固定): 外网:通过笔记本的无线网卡连接: 内网:通过笔记本的本地连接: 第一步,连接网线,配置本地连接地址,注意IP地址不要 ...
随机推荐
- Java-Runoob-高级教程-实例-时间处理:03. Java 实例 - 获取年份、月份等
ylbtech-Java-Runoob-高级教程-实例-时间处理:03. Java 实例 - 获取年份.月份等 1.返回顶部 1. Java 实例 - 获取年份.月份等 Java 实例 以下实例演示 ...
- 学习笔记之Matplotlib
Matplotlib: Python plotting — Matplotlib 2.2.2 documentation https://matplotlib.org/ Matplotlib is a ...
- MySQL事务提交过程(转载)
http://blog.csdn.net/sofia1217/article/details/53968214 上一篇文章我们介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlo ...
- mysql默认8小时连接断开机制解决
转载连接:http://www.myexception.cn/database/1639209.html 本文提供了对c3p0与DBCP连接池连接MySql数据库时, 8小时内无请求自动断开连接的解决 ...
- junit中线程需要注意的问题
Junit主线程执行完毕后,就会结束进程,不关注是否有其他线程在运行.当Junit运行完毕后,如果其他线程还没有执行完毕,那么不会再执行. 使用CountDownLatch,保证启动的线程运行结束后, ...
- echo() print() printf() print_r() 的区别
echo是一个语言结构而非函数,因此它无法被变量函数调用, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print() 只能打印出简单类型变量的值(如int ...
- sas 数据集导出到excel
PROC EXPORT DATA= Loan.BOM_FILENAME_2 OUTFILE= "D:\output.xls" DBMS=EXCEL REPLAC ...
- win10配置labelImg
[引言]在目标检测中,需要用图像标注工具标注图像,如Labelme . labelImg等,本文使用的是LabelImg ,LabelImg在Ubuntu下很好部署, 在win10中有些地方要注意下, ...
- escape()、encodeURI()、encodeURIComponent() 编码解码
escape().encodeURI().encodeURIComponent()区别详解 JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encode ...
- jquery选择器筛选器
jQuery对象 Query 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 jQuery 里 ...