URL类统一资源定位和Inetaddress类简介

发表时间:2017-05-09 13:54:56 浏览量( 39 ) 留言数( 0 )

一、Inetaddress类

1、主机名解析

前面讲过IP地址是唯一标识一台计算机,但是我们也可以使用主机名访问。另外,我们平时上网时就是访问另外一台计算机提供的服务,但是我们在浏览器上面输入的确不是IP地址而是域名,因为IP地址是一些无意义的数字,比较难记忆,所以才会出现域名这个技术,但是IP地址依然是计算机的唯一标识,所以我们就需要把域名或者主机名解析成IP地址,才能定位计算机。

域名或者主机名到IP地址的解析通过使用本地机器配置信息和网络命名服务(如域名系统(Domain Name System,DNS)来实现。对于任何主机名称,都返回其相应的 IP 地址。反向名称解析意味着对于任何IP地址,都返回与IP地址关联的主机。

InetAddress 类提供将主机名解析为其 IP 地址(或反之)的方法。常用方法如下:

byte[] getAddress()  

返回此 InetAddress 对象的原始 IP 地址。    

InetAddress[]   getAllByName(String host) 

在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。    

InetAddress    getByAddress(byte[] addr) 

在给定原始 IP 地址的情况下,返回 InetAddress 对象。    

InetAddress    getByAddress(String host, byte[] addr) 

根据提供的主机名和 IP 地址创建 InetAddress。    

InetAddress    getByName(String host) 

在给定主机名的情况下确定主机的 IP 地址。    

String    getCanonicalHostName() 

获取此 IP 地址的完全限定域名。    

String    getHostAddress() 

返回 IP 地址字符串(以文本表现形式)。    

String    getHostName() 

获取此 IP 地址的主机名。    

static InetAddress    getLocalHost() 

返回本地主机。    

2、示例代码:

我们想知道一下百度服务器的IP地址,实现代码如下:

public static void main(String[] args) throws IOException {

		// 互联网协议 (IP) 地址
		InetAddress address = InetAddress.getByName("www.baidu.com");

		System.out.println("(IP) 地址:" + address.getHostAddress());
		System.out.println(" 地址:" + address.getHostName());

		// localhost 192.168.11.144 127.0.0.1

		InetAddress[] addresses = InetAddress.getAllByName("www.baidu.com");
		for (int i = 0; i < addresses.length; i++) {
			System.out.println("(IP) 地址" + addresses[i].getHostAddress());
		}

	}

打印后我们就知道百度服务器的IP地址是多少,运行结果如下:

attcontent/ae61c1b9-5561-47f8-b03f-bf4705452453.png

二、URL类统一资源定位

1、简介

URL(Uniform Resource Locator)----统一资源定位器,表示Internet上某一资源的地址。java.net.URL类就是代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。比如新浪的一个新闻的定位:

http://finance.sina.com.cn/china/20131119/000617358603.shtml

通常,URL 可分成几个部分。上面的 URL 示例指示使用的协议为 http (超文本传输协议)并且该信息驻留在一台名为 finance.sina.com.cn的主机上。主机上的信息名称为 china/20131119/000617358603.shtml,URL 的这一部分称为路径部分,主机上此名称的准确含义取决于协议和主机。该信息一般存储在文件中,但可以随时生成。该 。

URL可选择指定一个“端口”,它是用于建立到远程主机TCP连接的端口号。如果未指定该端口号,则使用协议默认的端口。例如,http 协议的默认端口为80

应用程序也可以指定一个“相对 URL”,它只包含到达相对于另一个 URL 的资源的足够信息。HTML 页面中经常使用相对 URL。例如,假设 URL 的内容是:

    http://java.sun.com/index.html 

其中包含的相对 URL:FAQ.html 

为以下形式的缩写:http://java.sun.com/FAQ.html 

相对 URL 不需要指定 URL 的所有组成部分。如果缺少协议、主机名称或端口号,这些值将从完整指定的 URL 中继承。但是,必须指定文件部分。可选的片段部分不继承。

具体内容大家可以参考JDK文档。

2、示例代码

把新浪网站下载下来,在控制台显示

 public static void main(String[] args) throws IOException {

		URL url = new URL(
				"http://www.sina.com/");

		BufferedReader br = new BufferedReader(new InputStreamReader(
				url.openStream()));
		
		String temp=br.readLine();
		while(temp!=null){
			System.out.println(temp);
			temp=br.readLine();
		}
		
		br.close();

	}

有关网络的更是内容,我们在后面学习android的网络通讯是讲解,这里就不详细讲解了。下面我们学习使用socket进行网络通信。