`
heji
  • 浏览: 88816 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

获取上网IP

阅读更多
    这两天在做一个根据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手机获取上网的ip地址

    在Android中,可以使用`InetAddress.getLocalHost()`获取本地主机的IP地址,但通常这只会返回localhost(127.0.0.1),并不适合我们获取上网的IP地址。为了获取外网IP,通常需要连接一个外部服务器,如公共的IP查询...

    android_获取手机上网ip地址demo

    在Android平台上,获取手机当前的上网IP地址是一个常见的需求,特别是在开发网络相关的应用程序时。这个"android_获取手机上网ip地址demo"是一个示例项目,它演示了如何在Android设备上实现这一功能。下面我们将详细...

    Linux如何自动获取IP地址及配置静态IP地址上网

    Linux 自动获取 IP 地址及配置静态 IP 地址上网 在 Linux 系统中,自动获取 IP 地址和配置静态 IP 地址上网是非常重要的网络配置步骤。下面我们将详细介绍如何实现自动获取 IP 地址和配置静态 IP 地址上网。 第一...

    C#实现获取多网卡IP地址方法

    本篇将深入探讨如何使用C#来实现获取多网卡IP地址的方法。 在Windows系统中,网络接口通常被称为网卡(Network Interface Card, NIC),每个网卡可能有多个IP地址,包括IPv4和IPv6。获取这些信息涉及到对系统网络...

    C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析

    本文实例讲述了C#实现获取本地内网(局域网)和外网(公网)IP地址的方法。分享给大家供大家参考,具体如下: 1、获取本机的IP地址集合: /// /// 获取本机所有ip地址 /// /// &lt;param name=netType&gt;InterNetwork:...

    获取本地的“物理”网卡的IP地址和MAC地址

    在各种网络操作中,了解并获取本地计算机的物理(也称为硬件)网卡的IP地址和MAC地址是非常关键的。这些信息对于网络配置、故障排查和安全监控都有重要作用。下面将详细阐述如何获取这些信息,以及它们在网络中的...

    上网IP及上网接入地点查询

    标题中的“上网IP及上网接入地点查询”表明这是一个与网络信息相关的小程序,主要用于获取用户设备的互联网IP地址以及对应的地理位置信息。这个程序可能适用于网络安全分析、网络故障排查或者简单的个人隐私保护场景...

    java实现免费代理IP的获取方式 并实时校验代理IP是否有效

    Java 实现免费代理IP的获取方式 并动态实时校验是否有效,java文件项目内含有Jsoup的Jar包(Jsoup是加工过的,含请求),有2个主入口程序: 其一:用于请求代理IP,并立即校验是否是一个有效的代理IP,如果有效,...

    解决无法自动获取IP的问题

    但是,有时计算机可能无法自动获取 IP 地址,导致无法上网的问题。下面我们将详细介绍这种问题的解决方法。 问题现象 无法自动获取 IP 地址的计算机可能会出现以下现象: * 无法访问 Internet * 地址栏输入 192....

    获取上网账号密码到D盘(ADSL宽带密码上网IP)

    本人测试非常好用 ADSL 密码备份工具 网卡上网IP地址备份工具 DNS 备份工具,无线网卡 本地网卡 运行成功后会再D盘自动生成 本机宽带密码和网卡IP.txt文件。非常适合重新安装C盘系统用户,很实用。

    远程控制内网+外网上线配置

    1、内网中机器设置:(1)、控制面板---添加删除程序—添加组件----IIS----“万维网服务”、...注:此方法只能用于上网固定IP用户,对自动获取上网IP用户只当次有效(指内网机器、路由器设置后没有重启、关机的情况)。

    IP-COM_M300上网设置(适用M100_M300_M500

    5. 动态IP:IP-COM_M300支持动态IP上网方式,能够自动获取IP地址和其他网络参数。 6. 代理网段:IP-COM_M300支持代理网段,能够将多个网段代理到一起,提供灵活的网络连接解决方案。 IP-COM_M300上网设置提供了灵活...

    上网IP的文档

    根据给定的信息,“上网IP的文档”主要涉及的是与上网相关的IP地址知识,尤其是在校园网环境中如何实现免费上网。下面将对这一主题进行详细的解析。 ### IP地址的基础知识 1. **定义**:IP(Internet Protocol)...

    java本机获取外网IP 2014_08_05

    通常,用户都是通过路由上网,所以电脑只知道本机内网IP,所以我们需要通过别的网站来判断。我是通过访问www.ip138.com来获取外网IP,并用JFrame显示。该方法的关键是正确的ip138查询网站的URL。目前能成功获取,若...

    不能上网就重新获取IP地址试试看

    采用批处理文件,先ping百度,是否能上网,重新获得IP地址,查看最后的IP地址

    远程计算机ip地址获取器

    这个"远程计算机IP地址获取器"程序看起来是专为动态IP用户设计的,特别是那些通过拨号上网方式获得每次连接时不同IP地址的用户。这类用户每次上网时,公网IP可能会变化,因此需要一种方式来跟踪和获取最新的IP地址。...

    Java获取客户端IP

    在开发工作中,我们常常需要获取客户端的IP。一般获取客户端的IP地址的方法是:request.getRemoteAddr();但是在通过了Apache,Squid等反向代理软件不能获取到客户端的真实IP地址了。  原因:由于在客户端和服务之间...

    获取上网帐号密码

    例如,"获取上网帐号密码并自动保存到D盘.EXE"可能就是这样一种工具。使用这类工具需谨慎,因为它们可能会带有潜在风险,如病毒或恶意软件。在下载和运行任何未知程序前,务必确保其来源可靠,并进行病毒扫描。 4. ...

    获取外网IP

    在IT领域,获取外网IP是一项常见的需求,特别是在网络编程和服务器管理中。外网IP,也称为公网IP,是互联网上唯一标识你设备的地址,使得其他网络上的设备能够与之通信。以下是对这个主题的详细解释: 1. **什么是...

    UBUNTU静态IP绑定MAC地址上网方法

    在Ubuntu操作系统中,有时我们需要将计算机的静态IP地址与MAC物理地址绑定,以便在特定网络环境中,如学校或公司的网络管理策略下正常上网。本文将详细介绍如何在Ubuntu 12.04版本中进行这样的配置。 首先,我们...

Global site tag (gtag.js) - Google Analytics