获取计算机广域网IP的一个例子

简介:
最近需要在客户端加入检测用户IP地址,便于分析信息来源的功能。 然而socket的API所获取到的IP是局域网的,查了下资料,只有穿过NAT之后才能拿到客户的出口IP地址。 于是变通了一下思路,采用访问一个web程序的方式,根据http get返回信息拿到客户端的IP。
测试,用asp写了一句.
代码:
<%=Request.ServerVariables( "REMOTE_ADDR") %>
不需要太多的信息,只需要返回给我一个IP地址的字符串就行了。

然后用了现成的 基于c的curl开发包,用于向web服务器发起一次请求并且接收数据。这个curl库很强大,支持文件上传下载,http get提交,post提交等等很多功能。有兴趣的朋友可以了解一下。

之后就很简单了,针对curl进行了一次简单的封装,然后发起一个请求并接收就OK
代码:
//创建返回HTTP信息对象 
        receiveInfo myReceiveInfo; 
         //定义获取IP的http地址 
        std:: string url =  "http://www.pal66.com/alan/getip/index.asp"; 
        //返回IP 
        std::string wanIpStr = myReceiveInfo.ReceiveGetInfo(url); 
        //转换格式 
        m_localWanIp =wxString(wanIpStr .c_str(),wxConvUTF8);
代码在getwanipSource.rar 
程序在 Release.part01.rar -  Release.part04.rar  没办法.支持wxWidgets的运行库有点大,什么时候Win7能够把wxWidgets的运行库内置就完美了。
windows xp sp3+wxWidgets2.8.9 +CodeBlocks8.0.2+gcc 3.4.5 环境下编译通过
用vc或者其他工具的朋友。其实将代码中负责http请求的 curlPlus.h curlPlus.cpp 单独拿出来加入到自己的工程里就可以了。这个类是基于标准C++的,为的是将curl 的c语言风格接口再封装一次,更加方便而已。


本文转自阿汐 51CTO博客,原文链接:http://blog.51cto.com/axiii/166116,如需转载请自行联系原作者


相关文章
|
测试技术
读完这篇文章后,才发现Allpairs这款工具,让测试用例变得如此简单
读完这篇文章后,才发现Allpairs这款工具,让测试用例变得如此简单
820 0
|
Linux 开发工具 Android开发
python之实现apk
python之实现apk
|
搜索推荐 数据可视化 开发者
低代码开发的优势和劣势
【8月更文挑战第4天】低代码开发的优势和劣势
286 5
【Web】forward 和 redirect 的区别
【Web】forward 和 redirect 的区别
|
存储 编解码 算法
无损压缩和有损压缩
【4月更文挑战第26天】无损压缩和有损压缩
1352 2
|
网络协议 数据安全/隐私保护
获取域名转移密码
当您想将域名从原注册商转移到另一个注册商时,您需要从原注册商处获取域名转移密码
359 1
|
存储 云计算
阿里云分布式存储Pangu团队招人啦
阿里云-飞天-盘古是阿里云自研的分布式存储平台,承接了整个阿里云的存储业务,拥有海量的用户。因业务需求增加,诚邀广大志同道合者加入。
7948 0
|
存储 iOS开发 开发者
IOS上架流程详解,包含审核避坑指南!
IOS上架流程详解,包含审核避坑指南!
|
供应链 安全 数据管理
中国新闻周刊报道|不流通无价值,阿里瓴羊港打造共享“数据流通港”
中国新闻周刊报道|不流通无价值,阿里瓴羊港打造共享“数据流通港”
433 0