最近写的程序需要获取本地IP地址,于是上网搜了下,找到了一段代码。如下:
public String getLocalIpAddress() {
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 (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}
之后程序在别的手机上运行没问题,可在我的galaxy nexus上则获取到了类似
fe80::b607:f9ff:fee5:487e..这样的IP地址。因为最近我的手机升到了4.0.4,所以怀疑是系统原因。
经过一番努力,终于找出原因。
上面的IP地址是IPV6的地址形式(大概这个意思,具体没有太深入研究)。解决方法是,在上面代码中的最内层的for循环的if语句中对inetAddress进行格式判断,只有其是IPV4格式地址时,才返回值。修改后代码如下:
public String getLocalIpAddress() {
try {
String ipv4;
List nilist = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface ni: nilist)
{
List ialist = Collections.list(ni.getInetAddresses());
for (InetAddress address: ialist){
if (!address.isLoopbackAddress() && InetAddressUtils.isIPv4Address(ipv4=address.getHostAddress()))
{
return ipv4;
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}
本人手中也只有这个4.0.4的系统,不知道别的4.0版本的手机是否会出现此问题,不过如果有,解决方法一样。
希望对大家有所帮助。。
分享到:
相关推荐
获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP获取本地IP...
C#简单编写的一个获取本地ip,mac地址的小程序,C#简单编写的一个获取本地ip,mac地址的小程序
通过异步任务来获取当前用户的ip地址,使用的时候调用getRemoteIP方法就可以,需要传一个可以获取公网ip的url地址,这个百多很多,比如,搜狐,淘宝之类的都有,同时还有一个超时的任务,具体看代码了
labview获取计算机IP地址
java写的获取本地IP地址的小程序,附有源代码 大家一起学习 一起进步 如有更好的方法 请留言 谢谢
在Linux C下获取本地IP地址源代码(当然排除127.0.0.1),编译通过,测试成功。
C# 获取本地IP地址以及MAC地址C# 获取本地IP地址以及MAC地址
获取本地,IP地址BAT
网上找了下,好像这方面的代码比较少,而且大部分都不可用,所以自己写了一个小工具,可以获得外网的IP、城市等信息。 compileSdkVersion 28 defaultConfig { applicationId "com.ip.chj.ipaddress" minSdk...
获取内网ip地址3种方法。 1、TIdIPWatch控件方法 2、TGStack 3、TWSADATA
2、类QHostInfo的fromName()函数,以主机名为参数作为输入,来获取主机的信息,然后利用address()函数,获取本机所有的IP地址,下面的代码通过if(address.protocol()==QAbstractSocket::IPv4Protocol)判断,仅仅输出...
建立C++类,VC++获取本地IP地址及本地计算机名
调用函数,利用套接字进行获取,然后将Ip地址转换后输出。
可实现,自动获取本地IP地址,并获取经纬度坐标,通过复制信息,之后点击定位可实现经纬度坐标的定位。由于是调用百度地图和其他网页的资源,所以导致定位不是太准确,代码也只是1.0版本还有待后续完善。本人刚接触...
Qt获取IP地址、MAC地址等网卡信息,区分本地网卡、无线网卡和虚拟网卡
获取本地IP地址,获取本地Host名称,获取Linux下的IP地址,获取用户真实IP地址,get/post请求 相应的工具类
本文实例讲述了C#实现获取本地内网(局域网)和外网(公网)IP地址的方法。分享给大家供大家参考,具体如下: 1、获取本机的IP地址集合: /// /// 获取本机所有ip地址 /// /// <param name=netType>InterNetwork:...
内容概要:通过带着读者手写简化版 ajax请求框架,了解网络请求核心原理。在手写ajax的过程中会摘取整体框架中的核心逻辑,简化代码实现过程...在webapp工程,获取终端ip 获取本地ip 获取本机ip地址,403报错解决方案。
获取本地IP信息,项目经常用到 适合新手 推荐!
c++builder获取本地IP,已经脱机运行,请放心下载