这两天在做一个根据IP地址来定位城市的功能。两个方案:1.自己解析纯真IP库,2.用网上现成的IP查询接口获取IP。这两个方案都做了,但是觉得第一个方案实在是太操蛋了,qqwry.dat文件就8M,再加上我的程序,这个文件就太大了,装好就有7M左右,实在是恐怖。所以就执行了第二个方案。移动互联网嘛,不互联怎么和世界沟通??呵呵……接下来的问题就来了,我怎么获取我自己的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;
}
这个方法的确是可以获得IP,但是这个IP大多数获得是局域网的IP。杯具了……只要使用SIM卡上网,绝对获得的是局域网的IP,想根据IP定位不肯能啊~~~
想了一下午,最后我用了一个比较无耻的方法:上网,去获得自己的IP,再把这个IP抓出来。^_^……下面是方法,很简单:
public class IPNetUtils {
private static final String IP_URL = "http://www.ip138.com/ip2city.asp";
private static final String CHARTSET = "UTF-8";
/**
* 获得IP
*
* @return
*/
public static String getIPInfo() {
URL urlInUse = null;
URLConnection conn = null;
ArrayList<String> list = new ArrayList<String>();
String temp = "";
try {
urlInUse = new URL(IP_URL);
conn = urlInUse.openConnection();
InputStream in = conn.getInputStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(in,CHARTSET));
String line = "";
while ((line = bf.readLine()) != null) {
list.add(line.trim());
}
if (list != null) {
temp = list.get(5);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return getIP(temp);
}
/**
* 截取IP
*
* @param str
* @return
*/
private static String getIP(String str) {
return str.substring(str.indexOf('[') + 1, str.indexOf(']'));
}
}
方法虽然笨,但是问题解决了,蛋痛了一下午……如果有那位大牛知道其他方法,希望告知,我很想知道怎么直接获取,我这个方法是真的很无奈的方法。
分享到:
相关推荐
在Android中,可以使用`InetAddress.getLocalHost()`获取本地主机的IP地址,但通常这只会返回localhost(127.0.0.1),并不适合我们获取上网的IP地址。为了获取外网IP,通常需要连接一个外部服务器,如公共的IP查询...
在Android平台上,获取手机当前的上网IP地址是一个常见的需求,特别是在开发网络相关的应用程序时。这个"android_获取手机上网ip地址demo"是一个示例项目,它演示了如何在Android设备上实现这一功能。下面我们将详细...
Linux 自动获取 IP 地址及配置静态 IP 地址上网 在 Linux 系统中,自动获取 IP 地址和配置静态 IP 地址上网是非常重要的网络配置步骤。下面我们将详细介绍如何实现自动获取 IP 地址和配置静态 IP 地址上网。 第一...
本篇将深入探讨如何使用C#来实现获取多网卡IP地址的方法。 在Windows系统中,网络接口通常被称为网卡(Network Interface Card, NIC),每个网卡可能有多个IP地址,包括IPv4和IPv6。获取这些信息涉及到对系统网络...
本文实例讲述了C#实现获取本地内网(局域网)和外网(公网)IP地址的方法。分享给大家供大家参考,具体如下: 1、获取本机的IP地址集合: /// /// 获取本机所有ip地址 /// /// <param name=netType>InterNetwork:...
在各种网络操作中,了解并获取本地计算机的物理(也称为硬件)网卡的IP地址和MAC地址是非常关键的。这些信息对于网络配置、故障排查和安全监控都有重要作用。下面将详细阐述如何获取这些信息,以及它们在网络中的...
Java 实现免费代理IP的获取方式 并动态实时校验是否有效,java文件项目内含有Jsoup的Jar包(Jsoup是加工过的,含请求),有2个主入口程序: 其一:用于请求代理IP,并立即校验是否是一个有效的代理IP,如果有效,...
但是,有时计算机可能无法自动获取 IP 地址,导致无法上网的问题。下面我们将详细介绍这种问题的解决方法。 问题现象 无法自动获取 IP 地址的计算机可能会出现以下现象: * 无法访问 Internet * 地址栏输入 192....
因此,“上网IP及上网接入地点查询”这一工具应运而生,其核心功能不仅能够让用户迅速获取自己的IP地址,还能够精准探测到上网的接入地点,极大地提高了网络管理的效率和安全性。 在详细介绍此工具的功能之前,首先...
本人测试非常好用 ADSL 密码备份工具 网卡上网IP地址备份工具 DNS 备份工具,无线网卡 本地网卡 运行成功后会再D盘自动生成 本机宽带密码和网卡IP.txt文件。非常适合重新安装C盘系统用户,很实用。
1、内网中机器设置:(1)、控制面板---添加删除程序—添加组件----IIS----“万维网服务”、...注:此方法只能用于上网固定IP用户,对自动获取上网IP用户只当次有效(指内网机器、路由器设置后没有重启、关机的情况)。
5. 动态IP:IP-COM_M300支持动态IP上网方式,能够自动获取IP地址和其他网络参数。 6. 代理网段:IP-COM_M300支持代理网段,能够将多个网段代理到一起,提供灵活的网络连接解决方案。 IP-COM_M300上网设置提供了灵活...
根据给定的信息,“上网IP的文档”主要涉及的是与上网相关的IP地址知识,尤其是在校园网环境中如何实现免费上网。下面将对这一主题进行详细的解析。 ### IP地址的基础知识 1. **定义**:IP(Internet Protocol)...
通常,用户都是通过路由上网,所以电脑只知道本机内网IP,所以我们需要通过别的网站来判断。我是通过访问www.ip138.com来获取外网IP,并用JFrame显示。该方法的关键是正确的ip138查询网站的URL。目前能成功获取,若...
采用批处理文件,先ping百度,是否能上网,重新获得IP地址,查看最后的IP地址
这个"远程计算机IP地址获取器"程序看起来是专为动态IP用户设计的,特别是那些通过拨号上网方式获得每次连接时不同IP地址的用户。这类用户每次上网时,公网IP可能会变化,因此需要一种方式来跟踪和获取最新的IP地址。...
在开发工作中,我们常常需要获取客户端的IP。一般获取客户端的IP地址的方法是:request.getRemoteAddr();但是在通过了Apache,Squid等反向代理软件不能获取到客户端的真实IP地址了。 原因:由于在客户端和服务之间...
例如,"获取上网帐号密码并自动保存到D盘.EXE"可能就是这样一种工具。使用这类工具需谨慎,因为它们可能会带有潜在风险,如病毒或恶意软件。在下载和运行任何未知程序前,务必确保其来源可靠,并进行病毒扫描。 4. ...
在IT领域,获取外网IP是一项常见的需求,特别是在网络编程和服务器管理中。外网IP,也称为公网IP,是互联网上唯一标识你设备的地址,使得其他网络上的设备能够与之通信。以下是对这个主题的详细解释: 1. **什么是...
在Ubuntu操作系统中,有时我们需要将计算机的静态IP地址与MAC物理地址绑定,以便在特定网络环境中,如学校或公司的网络管理策略下正常上网。本文将详细介绍如何在Ubuntu 12.04版本中进行这样的配置。 首先,我们...