C++代码获取外网IP

4星 · 超过85%的资源 需积分: 40 172 下载量 178 浏览量 更新于2024-12-14 6 收藏 636B TXT 举报
"该代码片段是用C++编写的一个简单函数,用于获取本机的外网IP地址。它通过向网站`http://www.ip138.com/ip2city.asp`发送HTTP请求,然后读取返回的HTML内容来提取IP地址。这个过程涉及到网络编程和文件操作,具体包括URL下载、文件读取以及字符串处理。" 在C++编程中,获取本机外网IP是一项常见的需求,特别是在网络通信和定位服务中。上述代码实现了一个名为`GetMyAsp`的函数,它利用Windows API中的`URLDownloadToFile`函数从指定的URL下载网页内容。`URLDownloadToFile`函数是一个来自`urlmon.lib`库的API,它负责从互联网上下载文件到本地磁盘。 首先,定义了一个字符数组`szMyIp`用于存储获取到的IP地址,初始化为全零。然后,向`www.ip138.com`发送一个HTTP GET请求,请求的URL是`http://www.ip138.com/ip2city.asp`,该页面会返回包含访问者IP地址的HTML内容。请求成功后,数据被保存到本地的`ip.txt`文件中。 接下来,打开并读取`ip.txt`文件。这里使用了标准C库的`fopen`、`fread`和`fclose`函数,分别用于打开、读取和关闭文件。读取到的内容被存储在`fBuffer`数组中。 为了从HTML内容中提取IP地址,代码遍历`fBuffer`,寻找特定的字符序列。在HTML中,IP地址通常被方括号包围,因此通过查找字符0x5b(左方括号)和0x5d(右方括号)来确定IP地址的位置。找到这些字符后,使用`memcpy`复制IP地址到`szMyIp`数组,并打印出来。 最后,调用`DeleteFile`删除临时文件`ip.txt`以清理工作空间。 这个方法虽然简单,但依赖于特定网站的HTML结构,如果网站结构改变,可能无法正确提取IP。此外,这种方法可能受到网络延迟和网站访问限制的影响。在实际应用中,更推荐使用DNS查询或第三方API来获取更稳定可靠的外网IP地址。例如,可以使用公共的IP查询API,如`https://api.ipify.org`,它会直接返回你的外网IP。