[转] 原文

             Android 手机上获取手机当前上网IP地址
                (手机网关给手机号分配的IP)

每个手机上网通过移动网关的时候,网关都会给该手机号分配一个IP地址(当然这个IP地址会在下线上线后会改变,网关都有记录的)

现在做的应用需要获取该IP地址,提交给服务器,代码如下:

[java] view plain copy
  1. /**
  2. * 用来获取手机拨号上网(包括CTWAP和CTNET)时由PDSN分配给手机终端的源IP地址。
  3. *
  4. * @return
  5. * @author SHANHY
  6. */
  7. public static String getPsdnIp() {
  8. try {
  9. for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
  10. NetworkInterface intf = en.nextElement();
  11. for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
  12. InetAddress inetAddress = enumIpAddr.nextElement();
  13. if (!inetAddress.isLoopbackAddress()) {
  14. return inetAddress.getHostAddress().toString();
  15. }
  16. }
  17. }
  18. } catch (Exception e) {
  19. }
  20. return "";
  21. }

如上这样写,在有些情况下就会有问题了,比如我现在用的是安卓4.0系统的手机,按上面的方法默认会先获取到ipv6的地址,有时候我们只想要ipv4的地址,就需要再多做个类型判断,代码如下:

[java] view plain copy
  1. /**
  2. * 用来获取手机拨号上网(包括CTWAP和CTNET)时由PDSN分配给手机终端的源IP地址。
  3. *
  4. * @return
  5. * @author SHANHY
  6. */
  7. public static String getPsdnIp() {
  8. try {
  9. for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
  10. NetworkInterface intf = en.nextElement();
  11. for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
  12. InetAddress inetAddress = enumIpAddr.nextElement();
  13. if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
  14. //if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet6Address) {
  15. return inetAddress.getHostAddress().toString();
  16. }
  17. }
  18. }
  19. } catch (Exception e) {
  20. }
  21. return "";
  22. }

----------------------------------------------------------------------------

谢谢~~~

Android 手机上获取手机当前上网IP地址的更多相关文章

  1. 【风马一族_Android】Android 从命令行界面获取手机信息

    Android 从命令行界面获取手机信息 1: cmd 打开命令行界面 2:adb devices   获取与电脑相连的设备,例如:模拟器.真机(手机) (右击“标记”,选择设备名称,点击“Ctrl+ ...

  2. 获取本机的IP地址和mac地址

    1. 以前一直用ipconfig来查看ip地址,哈哈哈,现在发现挺好玩 #获取本机的IP地址和mac地址 import uuid import socket def get_mac_address() ...

  3. 【Win 10 应用开发】获取本机的IP地址

    按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至 ...

  4. nodejs之获取客户端真实的ip地址+动态页面中引用静态路径下的文件及图片等内容

    1.nodejs获取客户端真实的IP地址: 在一般的管理网站中,尝尝会需要将用户的一些操作记录下来,并记住是哪个用户进行操作的,这时需要用户的ip地址,但是往往当这些应用部署在服务器上后,都使用了ng ...

  5. PHP获取APP客户端的IP地址的方法

    分析php获取客户端ip 用php能获取客户端ip,这个大家都知道,代码如下: /** * 获取客户端ip * @param number $type * @return string */ func ...

  6. 【Go】获取用户真实的ip地址

    原文链接:https://blog.thinkeridea.com/201903/go/get_client_ip.html 用户请求到达提供服务的服务器中间有很多的环节,导致服务获取用户真实的 ip ...

  7. 获取本机的ip地址(排除虚拟机,蓝牙等ip)

    项目中遇到了要获取本地ip的需求,网上查找资料遇到很多坑,很多Java获取本机ip地址的方法要么是根本获取不到,要么是获取的有问题. 网上常见的方法如下 InetAddress.getLocalHos ...

  8. 通过HttpservletRequest对象获取客户端的真实IP地址

    这篇文章主要介绍了Java中使用HttpRequest获取用户真实IP地址,使用本文方法可以避免Apache.Squid.nginx等反向代理软件导致的非真实IP地址,需要的朋友可以参考下 在JSP里 ...

  9. 用Java来获取访问者真实的IP地址

    用Java来获取访问者真实的IP地址 转载 2016年06月07日 14:36:02 标签: 16497 编辑 删除 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAdd ...

随机推荐

  1. activity通过流程实例id动态获取流程图并展示在jsp页面上

    提供的Service方法如下: Java /** * 获取当前任务流程图 * * @param processInstanceId * @return */ @Override public Inpu ...

  2. 技术总结PHP+微信

      ajax: //获取商品属性数据 function initGoodsAttr(){   $.ajax({       type: 'GET',       url:"<?php  ...

  3. flex 均分铺满

    <view>充值金额</view> <view class="weui-flex"> <repeat for="{{amount ...

  4. width: 50%; display:inline-flex;

    <style lang="less"> @import "../style/weui.wxss";   @wx-width: 750rpx; @wx ...

  5. NOIP2010~2017部分真题总结

    NOIP2010~2017部分真题总结 2010 (吐槽)md这个时候的联赛还只有4题吗? 引水入城 只要发现对于有合法解的地图,每个蓄水厂贡献一段区间这个结论就很好做了 那么\(O(n^3)\)对每 ...

  6. python列表和元组相互转换

    # 将列表转化为元组 lst=[11,22,33] t=tuple(lst) print(t,type(t)) # 打印结果:(11, 22, 33) <class 'tuple'> tu ...

  7. linux crontab+curl+php 实现php定时任务

    首先登入Linux ->用root登入 在命令行输入 crontab -e  之后就会打开一个文件,并且是非编辑状态,则是vi的编辑界面,通过敲键盘上的i,进入编辑模式,就可以编辑内容.这个文件 ...

  8. numpy的random模块详细解析

    随机抽样 (numpy.random) 简单的随机数据 rand(d0, d1, ..., dn) 随机值 >>> np.random.rand(3,2) array([[ 0.14 ...

  9. python——异常

    一.什么是异常 1.错误 从软件方面来说,错误是语法或是逻辑上的.错误是语法或是逻辑上的. 语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译.这些些错误必须在程序执行前纠正. 当程 ...

  10. 20160418 while,switch,do..while的使用

    9 一.While循环 示例:求100以内所有数的和 Int i=1;//初始条件 Int sum=0; While(i<=100)//循环条件 { Sum+=i;//循环体 i++;//状态改 ...