开发者社区> 科技小先锋> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

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

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

之后就很简单了,针对curl进行了一次简单的封装,然后发起一个请求并接收就OK
代码:
InBlock.gif//创建返回HTTP信息对象 
InBlock.gif        receiveInfo myReceiveInfo; 
InBlock.gif        //定义获取IP的http地址 
InBlock.gif        std::string url = "http://www.pal66.com/alan/getip/index.asp"; 
InBlock.gif        //返回IP 
InBlock.gif        std::string wanIpStr = myReceiveInfo.ReceiveGetInfo(url); 
InBlock.gif        //转换格式 
InBlock.gif        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,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
一起来聊聊 IP 地址、局域网、广域网、IPV4 和 IPV6 (下)
一起来聊聊 IP 地址、局域网、广域网、IPV4 和 IPV6 (下)
234 0
关于 SAP ABAP gateway OData 的一个诡异问题及解决办法
You can see that the old version of cache re-appears in the table in gateway system. Our SEGW project name: CRM_OPPORTUNITY. Gateway system: GM6/001 Backend system: AG3/001 I am doing some new enhancement on CL_CRM_OPPORTUNITY_MPC_EXT~ DEFINE to add some new nodes. ( The enhancement is done by dir
68 0
关于 SAP ABAP gateway OData 的一个诡异问题及解决办法
关于 SAP ABAP gateway OData 的一个诡异问题及解决办法
56 0
执行sh文件 进行MongoDB的业务逻辑导入
将从HDFS中的数据转化为Json格式写入文件后,十个文件的文件名为 文件名_01 ...._02 ....03格式。 编写个简单的sh文件 通过for do循环让i+1 文件名对应上就可以的- -执行时要传入文件名称以及需要导入的数据文件的路径,之所以要传进去 也是为了方便项目后续更改目录嘛~   .sh文件:    然而并没有什么乱用! 发现 ./mongo -h 10.1.235.62 -port 27017 --eval "db."${name}".drop()" 不管用!  是--eval的问题。
814 0
ASP.NET中App_Code,App_Data等文件夹的作用
1. Bin文件夹Bin文件夹包含应用程序所需的,用于控件、组件或者需要引用的任何其他代码的可部署程序集。该目录中存在的任何.dll文 件将自动地链接到应用程序。 2. App_Browser文件夹 该可选的文件夹包含.browser文件。
1078 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
又快又稳:阿里云下一代虚拟交换机解析
立即下载
问答网络
立即下载
云通信—构筑直连用户之“桥”
立即下载