如何获取手机端的IP地址

最近项目中需要获取手机端的IP地址,查了资料,发现网上的资料不全:

网上方法一:(在WiFi下获取)

public  String GetHostWifiIp() {

//获取wifi服务

WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);

//判断wifi是否开启

if (!wifiManager.isWifiEnabled()) {

wifiManager.setWifiEnabled(true);

}

WifiInfo wifiInfo = wifiManager.getConnectionInfo();

int ipAddress = wifiInfo.getIpAddress();

String ip = intToIp(ipAddress);

return ip;

}

private String intToIp(int i) {

return (i & 0xFF ) + "." +

((i >> 8 ) & 0xFF) + "." +

((i >> 16 ) & 0xFF) + "." +

( i >> 24 & 0xFF) ;

}

网上方法二:(据说可以通用,但是测试不行)

public static String GetHostGprsIp() {

try {

for (Enumeration<NetworkInterface> en = NetworkInterface

.getNetworkInterfaces(); en.hasMoreElements();) {

NetworkInterface intf = en.nextElement();

for (Enumeration<InetAddress> ipAddr = intf.getInetAddresses(); ipAddr

.hasMoreElements();) {

InetAddress inetAddress = ipAddr.nextElement();

if (!inetAddress.isLoopbackAddress()) {

return inetAddress.getHostAddress();

}

}

}

} catch (SocketException ex) {

Log.e("Error", ex.toString());

} catch (Exception e) {

Log.e("Error", e.toString());

}

return null;

}

,故我整理测试并测试得到:

public String GetIpAdd() {

// 判断wifi是否开启

String ipString = "";

//获取wifi服务

WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);

if (wifiManager.isWifiEnabled()) {

WifiInfo wifiInfo = wifiManager.getConnectionInfo();

int ipAddress = wifiInfo.getIpAddress();

// 格式转换

ipString = (ipAddress & 0xFF) + "." + ((ipAddress >> 8) & 0xFF)

+ "." + ((ipAddress >> 16) & 0xFF) + "."

+ ((ipAddress >> 24) & 0xFF);

} else { // 如果wifi没有开启的话,就获取3G的IP

try {

for (Enumeration<NetworkInterface> en = NetworkInterface

.getNetworkInterfaces(); en.hasMoreElements();) {

NetworkInterface intf = en.nextElement();

// 遍历所有的网卡设备,一般移动设备上只有2张网卡,其中一张是环回网卡

for (Enumeration<InetAddress> enumIpAddr = intf

.getInetAddresses(); enumIpAddr.hasMoreElements();) {

InetAddress inetAddress = enumIpAddr.nextElement();

// 过滤掉环回网卡和IPv6

if (!inetAddress.isLoopbackAddress()

&& !(inetAddress instanceof Inet6Address)) {

ipString = inetAddress.getHostAddress().toString();

}

}

}

} catch (SocketException ex) {

Log.e("TAG", "getIpAddr()" + ex.toString());

}

}

return ipString;

}

经测试,不管是WiFi下还是3g ,2g信号下都是可以的,希望可以帮助到别人!

时间: 2024-10-12 23:41:53

如何获取手机端的IP地址的相关文章

Jmeter获取手机端接口

使用Jmeter获取手机端请求接口信息与Fiddler原理类似,都是通过设置中间代理服务器的方式截获手机端发送的请求信息.使用的步骤相对fiddler来说稍微简单一点,获取接口信息分为以下几个步骤: 1. Jmeter中添加http代理服务器 a) 添加原件步骤:右键工作台->添加->非测试原件->HTTP代理服务器 b)   设置HTTP代理服务器信息 端口:默认端口号为8080,无特殊情况不必修改 目标控制器:选择将获取到的接口信息保存在何处 包含模式:仅获取包含模式中添加的样式的请

如何获取陌生服务器的IP地址

如何获取陌生服务器的IP地址 一.背景 在机房里有一台生产系统的服务器,该服务器有带外管理卡,但是管理卡的IP地址被其他同事修改过,现在已经不能找到历史记录,如果要实现这台服务器的带外管理功能,就必须知道服务器的带外管理卡IP地址,怎么解决呢? 二.解决办法 1.可以对这台服务器进行重启操作,然后登陆设备后台进行查找或修改,这种方式目前不可行. 2.可以通过抓包的方式实现,用一台笔记本随便配置一个IP地址如172.16.1.1,然后通过网线与这台服务器的带完管理卡直连,启用抓包软件进行转包. (

用Linux命令行获取本机外网IP地址

用Linux命令行获取本机外网IP地址 $ curl ifconfig.me$ curl icanhazip.com$ curl ident.me$ curl ipecho.net/plain$ curl whatismyip.akamai.com$ curl tnx.nl/ip$ curl myip.dnsomatic.com$ curl ip.appspot.com$ curl -s checkip.dyndns.org | sed 's/.*IP Address: \([0-9\.]*\)

python之获取微信服务器的ip地址

# -*- coding: cp936 -*- #PYTHON 27 #xiaodeng #获取微信服务器的ip地址 import urllib url='https://api.weixin.qq.com/cgi-bin/getcallbackip' data={'access_token':'VchuOKNr8X9tZVDrY_yG9qiJus_1nO1a7uT_iwWVwgGFdzPhPyaqreTE_qMKPas4SwRNif5k0A1zVw6Y9eTPI4CAYiUwpJvHdBt4f

PHP获取用户的真实IP地址

本文出至:新太潮流网络博客 PHP获取用户的真实IP地址,非代理IP function getClientIP(){ global $ip; if(getenv("HTTP_CLIENT_IP")){ $ip = getenv("HTTP_CLIENT_IP"); }else if(getenv("HTTP_X_FORWARDED_FOR")){ $ip = getenv("HTTP_X_FORWARDED_FOR"); }e

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

按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至于电话费嘛,基本上是交月租,通话费用可能平均不到1块钱,多的可能就几块钱.老周的单次通话时间一般不会长,长达半小时的通话也是偶然发生,多数情况下就说几句话而已,别说废话,长话短说,说完挂机. 有人会问,那如果要多聊一会儿呢,那就开聊天工具,聊语音.反正用的是光纤包年,多说几句废话也不花钱. 该省的钱

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

这篇文章主要介绍了Java中使用HttpRequest获取用户真实IP地址,使用本文方法可以避免Apache.Squid.nginx等反向代理软件导致的非真实IP地址,需要的朋友可以参考下 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid,nginx等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的UR

ubuntu下仅仅获取网卡一的ip地址 &amp;&amp; shell中字符串拼接

问题描述: ubuntu下仅仅获取网卡一的ip地址 问题背景: eth0,eth1,eth2……代表网卡一,网卡二,网卡三…… lo代表127.0.0.1,即localhost sudo ifconfig eth0 | grep 'inet addr' | cut -d : -f 2 | cut -d ' ' -f 1 问题描述: 已知字符串str1, str2, 拼接str1和str2,结果为str3 str1=hello str2=world str3="$str1 $str2"

获取本机的IP地址(局域网)与主机名称

编写内容保存为bat @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ echo "please wait" for /f "tokens=2 delims=:" %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b echo %fsip% set CT=%computerna