[转] 原文

             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. X明X源面试题《三》

    本文转自自zhangxh_Doris 昨天(05.23)下午去参加了明源软件的暑期实习宣讲+笔试,第一次听说这个行业,行业和笔试风格完全不一样啊,5道行测智力题+1个问答+ 斐波那契数列 + 洗牌算法 ...

  2. MVC架构模式概述

    MVC MVC概述: Model–view–controller (MVC) is a software architectural pattern for implementing user int ...

  3. 取消select默认样式

    /*清除select默认样式*/select { border: solid 1px #CACDD0; appearance:none; -moz-appearance:none; -webkit-a ...

  4. java 对象与二进制互转

    来自 : http://blog.csdn.net/luckyzhoustar/article/details/50402427 /** * @FileName: ByteToObject.java ...

  5. mac开发环境爬坑记(搭建php+nginx+mysql+redis+laravel+git+phpstorm)

    题外话:前几天,终于以原价一半的价格,将我那台15版mbp在bbs上卖了出去.之所以用了“终于”这个词儿,是我一直迟迟没有下定决心卖掉它,可眼瞅着再不卖掉,又要掉价,况且我的新电脑,也终于下来了. 话 ...

  6. Django 模板系统(template)

    介绍 官方文档 常用模板语法 只需要记两种特殊符号: {{  }} 和  {% %} 变量相关的用{{}} 逻辑相关的用{%%} 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点(.)在模 ...

  7. 如何安装secureCRT8.1破解

    安装地址 网盘: https://pan.baidu.com/s/1iGxi6BTCMC_jewCwcUHhgA 密码: u6jq 安装教程 1.点击安装 2.全部默认即可,安装完成之后再桌面上右击该 ...

  8. if控制器+循环控制器+计数器,控制接口分支

    但是我不想这么做,接口只想写一次,让循环控制器和if控制器去判断接口,执行我想要的分支.这里遇到了一个问题,if控制器通过什么去判断接下来的分支?我引入了一个计数器的概念.起始值为0,每次循环加1,将 ...

  9. ACM中使用 JAVA v2. 1

    ACM中使用JAVA v2.1 严明超 (Blog:mingchaoyan.blogbus.com Email:mingchaoyan@gmail.com) 0.前 言 文前声明:本文只谈java用于 ...

  10. Python学习进程(6)函数

        函数最重要的目的是方便我们重复使用相同的一段程序.     (1)函数的定义: 函数定义的简单规则: 1.函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(): 2.任何传入参数和 ...