inetaddress-Android通过获取IP的代码获取到的IP不对

问题描述

Android通过获取IP的代码获取到的IP不对

下面是获取IP的代码:
public String getLocalIpAddress() {

try {

for (Enumeration en = NetworkInterface

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

NetworkInterface intf = en.nextElement();

for (Enumeration enumIpAddr = intf

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

InetAddress inetAddress = enumIpAddr.nextElement();

if (!inetAddress.isLoopbackAddress()&& !inetAddress.isLinkLocalAddress()) {

return inetAddress.getHostAddress().toString();

}

}

}

} catch (SocketException ex) {

Log.e("WifiPreference IpAddress", ex.toString());

}

return null;

}

    我在我的小米手机上用这个方法获取本机的IP地址,获取到的IP是10.0.2.15,可是我在设置里找到本机的IP地址是10.88.134.210,这是为什么啊,还有我连上wifi后的ip地址应该是10.225.134.22,但是通过这个方法获取到的IP地址还是10.0.2.15,求大神指点迷津!!!!!!

解决方案

//必写

//必写

// 获取本地IP
public static String test() {
try {
for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = (NetworkInterface) en.nextElement();
for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = (InetAddress) enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e("WifiPreference IpAddress", ex.toString());
}
return null;
}

private void initView() {
    this.findViewById(R.id.btnInsert).setOnClickListener(this);
    this.findViewById(R.id.btnDel).setOnClickListener(this);
    this.findViewById(R.id.btnUpdate).setOnClickListener(this);
    this.findViewById(R.id.btnQuery).setOnClickListener(this);
    if (isBase) {
        mDataManager = DataManager.getInstance(this);
    }
}

4.2.1手机工作ok

解决方案二:

请参考网站。。 http://blog.sina.com.cn/s/blog_77c632410101cy1v.html

解决方案三:

     <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

  // 获取本地IP
    public static String test() {
        try {
            for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
                NetworkInterface intf = (NetworkInterface) en.nextElement();
                for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                    InetAddress inetAddress = (InetAddress) enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress()) {
                        return inetAddress.getHostAddress().toString();
                    }
                }
            }
        } catch (SocketException ex) {
            Log.e("WifiPreference IpAddress", ex.toString());
        }
        return null;
    }
时间: 2024-11-01 06:51:03

inetaddress-Android通过获取IP的代码获取到的IP不对的相关文章

Asp.net获取客户端IP常见代码存在的伪造IP问题探讨

如果某个网站是通过下面的代码获取IP,那么我们只要在Header里随意设置HTTP_VIA和X_FORWARDED_FOR,就可以达到伪造IP的目的   在网卡随便一搜: Asp.net 客户端IP 可以搜索到很多页面,提供的代码基本都类似于: 复制代码 代码如下: if (Request.ServerVariables["HTTP_VIA"] != null) return Request.ServerVariables["HTTP_X_FORWARDED_FOR"

Asp.net获取客户端IP常见代码存在的伪造IP问题探讨_实用技巧

在网卡随便一搜: Asp.net 客户端IP 可以搜索到很多页面,提供的代码基本都类似于: 复制代码 代码如下: if (Request.ServerVariables["HTTP_VIA"] != null) return Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0]; else return Request.ServerVariables["RE

asp.net获取URL和IP地址的方法汇总_实用技巧

HttpContext.Current.Request.Url.ToString() 并不可靠. 如果当前URL为 http://localhost/search.aspx?user=http://csharp.xdowns.com&tag=%BC%BC%CA%F5 通过HttpContext.Current.Request.Url.ToString()获取到的却是 http://localhost/search.aspxuser=http://csharp.xdowns.com&tag=

同局域网内,已知一个设备的外网IP,如何获取其外网IP?

问题描述 在同一个局域网内,已知一个设备的外网IP,如何获取其内网IP?用C#代码该怎么实现?或者是,在Socket通讯中,怎么获取远端设备的内网IP? 解决方案 本帖最后由 GAMU_kaito 于 2014-02-13 10:46:12 编辑解决方案二:补充一下,这个时候那个设备是在线的,但是那天设备不是本地机器个人的思路是:1.首先获取到局域网内所有在线的设备的外网IP和内网IP2.根据已知的外网IP查找到对应的内网IP但是一来,个人不知道第一步该怎样用代码实现:二来,觉得这样的方法似乎很

ip网址怎么获取客户端ip地址

问题描述 比如地址是:1.51.23.111/index.aspx没有域名怎么获取客户端ip地址///<summary>///获取远程访问用户的Ip地址///</summary>///<returns>返回Ip地址</returns>protectedstringGetIps(){stringloginip="";//Request.ServerVariables[""]--获取服务变量集合if(Request.Ser

php 获取服务器的ip址址

 代码如下 复制代码   /**  * 获取服务器的ip  * @access      public  * @return string  **/ function real_server_ip(){  static $serverip = NULL;    if ($serverip !== NULL){   return $serverip;  }    if (isset($_SERVER)){   if (isset($_SERVER['SERVER_ADDR'])){    $ser

Java实现获取客户端真实IP方法小结_java

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP. 经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请

JSP如何获取客户端真实IP地址_JSP编程

在JSP中,获取客户端IP的方法为:request.getRemoteAddr().这种方法在大部分情况下都是有效的,但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:3306/ 的URL反向代理为http://www.8888.com/ 的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.168.1.110,而并不是客户端的真实

Android获取移动设备IP地址

MainActivity如下: package cn.testip; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 获取移动设备的IP地址 */ pub