获取android设备公网IP的方案
2015-10-08 15:42
330 查看
1,收集可以获取公网ip的站点,最后筛选出下列5个站点:
http://httpbin.org/ip
http://ip-api.com/json
http://ipecho.net/plain
http://checkip.dyndns.org/
http://ifconfig.me/ip
2,加载策略:
2.1 app每次启动时,遍历【1】中整理的站点list,一旦ip获取成功,结束加载并缓存公网ip
2.2 需要使用公网ip时,检测ip缓存:有ip缓存,直接使用;否则,再次遍历【1】中整理的站点list加载ip,成功则缓存并直接使用,全部失败则执行容错逻辑
3,ip提取:
3.1 由于【1】中5个站点返回的数据格式不一致,为统一处理,采用正则匹配的方法提取ip
3.2 提取ipv4使用的正则:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[09][0-9]|[1-9][0-9]|[0-9])
http://httpbin.org/ip
http://ip-api.com/json
http://ipecho.net/plain
http://checkip.dyndns.org/
http://ifconfig.me/ip
2,加载策略:
2.1 app每次启动时,遍历【1】中整理的站点list,一旦ip获取成功,结束加载并缓存公网ip
2.2 需要使用公网ip时,检测ip缓存:有ip缓存,直接使用;否则,再次遍历【1】中整理的站点list加载ip,成功则缓存并直接使用,全部失败则执行容错逻辑
3,ip提取:
3.1 由于【1】中5个站点返回的数据格式不一致,为统一处理,采用正则匹配的方法提取ip
3.2 提取ipv4使用的正则:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[09][0-9]|[1-9][0-9]|[0-9])
相关文章推荐
- python获取局域网内计算机IP地址
- Java 判断IP地址为内网IP还是公网IP
- 更新思科路由器的公网IP地址
- Linux无法解析域名的背后原因
- 获取客户端IP、获取公网IP、验证IP是否内网
- 判断网络是否为真正的公网IP
- Android如何获取公网IP
- 私网分配IP时是否能使用公网IP
- 得到公网IP,然后得到当前地址
- Python之自动获取公网IP的实例讲解
- Python获取当前公网ip并自动断开宽带连接实例代码
- 网络工程师成长问答003-公司服务器没有公网IP,如何实现在外地访问公司的ERP?
- 关于Flask项目无法使用公网IP访问的解决方式
- Android Touch事件传递机制解析
- Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
- android Listview 软引用SoftReference异步加载图片
- android Tips
- Android高效加载大图、多图解决方案,有效避免程序OOM
- Android App使用Jsoup抓取网页数据显示
- 《ArcGIS Runtime SDK for Android开发笔记》——翻译:ArcGIS Runtime SDK for Android 10.2.7发布