1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android 手机上获取手机当前上网IP地址(手机网关给手机号分配的IP)

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

时间:2023-12-31 13:09:24

相关推荐

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

Android 手机上获取手机当前上网IP地址

(手机网关给手机号分配的IP)

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

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

/*** 用来获取手机拨号上网(包括CTWAP和CTNET)时由PDSN分配给手机终端的源IP地址。* * @return* @author SHANHY*/public static String getPsdnIp() {try {for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {NetworkInterface intf = en.nextElement();for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {InetAddress inetAddress = enumIpAddr.nextElement();if (!inetAddress.isLoopbackAddress()) {return inetAddress.getHostAddress().toString();}}}} catch (Exception e) {}return "";}

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

/*** 用来获取手机拨号上网(包括CTWAP和CTNET)时由PDSN分配给手机终端的源IP地址。* * @return* @author SHANHY*/public static String getPsdnIp() {try {for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {NetworkInterface intf = en.nextElement();for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {InetAddress inetAddress = enumIpAddr.nextElement();if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {//if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet6Address) {return inetAddress.getHostAddress().toString();}}}} catch (Exception e) {}return "";}

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

谢谢~~~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。