标签:
IPv4 32 位,4字节
IPv6 128位,16字节,共8区块,每个区块2字节
一个域名可以映射到多个ip地址,负载均衡,但每个时刻一个域名只能映射到一个;一个ip可以有多个域名。
包括一个主机名和一个ip地址
静态方法:InetAddress.getByName(namestr)--实际上会建立与本地DNS服务器的一个连接,来查找名字和地址(如果有缓存,就不会建立网络连接).提供域名时直接解析,当提供ip时,只有当请求主机名(getHostName)时才会完成主机名的DNS查找
静态方法:InetAddress.getAllByName(name)-- 会获取所有的地址
静态方法:InetAddress.getByAddress(String,byte[])
getHostName():只有在不知道主机名时才会DNS解析
getCanonicalHostName():知道主机名也会DNS解析
getAddress():返回一个byte数组,判断其长度可以得知是IPv4 还是IPv6
getHostAddress():返回四分段格式的ip地址
isReachable():判断是否可达(能否建立一个网络连接),尝试使用 traceoute,也就是 ICMP echo 请求查看地址是否可达
只要其 ip 地址相同就相等
定义:Uniform Resoure Locator 统一资源定位器,可以标识一个资源在 Internet 上的位置
URL类是一个类,保证的线程安全,其采用了策略模式来处理协议。
构建:必须确保创建的URL是合法的
?
?
获取数据
?
URL组成:以 “ http://www.baidu.com/java/index.jsp?parameter=param#toc” 进行说明
模式(协议):http,由方法 getProtocol()方法可获得
授权机构:www.baidu.com,也可以由用户、主机、端口号组成,getHost、getPort、getFile
路径:/java/index.jsp,getPath()
片段标识符:toc,getRef()获得
查询字符串:parameter=param,getQuery()获得
getFile:会返回 getPath()? getQuery()
相等性:当且仅当两个URL指向相同的主机、端口号和路径上的相同资源,而且有相同的片段标识符合查询字符串,才认为这两个 URL 是相等的。其 equals方法会尝试 DNS 解析,URL的equals 方法是一个阻塞 I/O 操作(URI的equals方法不会阻塞)
编码与解码
编码URLEncoder:所有非字母数字的字符会转换为 % 序列(除空格、下划线、连字符、点号和星号),最好选用 utf-8 进行编码。注意:不能传入整个URL进行编码,必须各个分段进行编码,不然会把?=&/ 等符号一起编码
解码URLDecoder:可以传入整个URI,因为其对非转义字符字符不做处理
定义:Uniform Resoure Identifier 统一资源标识符,
组成:模式:模式特定部分:片段;其中模式名要求使用 ASCII字符,而其他可以包含 Unicode 字符,有模式的URI是绝对URI,没有模式的URI是相对URI
构建
获取方法:
比较
比较模式时不需要考虑大小写,其中编码形式和未编码格式相比较是不等的
如果模式一样,不透明的URI 大于 透明的URL,什么是透明?不是分层结构的(如:电话号码)
?
个人觉得URL和URI提供的方法 和 描述都差不多,但是不同点在于当构建URI的时候不指定模式就是相对URI,从这里可以看出:URI 和 URL 都定义了what the resource is,但是URL还定义了 how to get the resource,所以说 URL 是URI的一个子集
当需要下载一个内容时,就该使用 URL 类,如果只是用来标识而不是获取,就该使用URI
?
定义:URLConnection 是一个抽象类,指定了资源的活动链接,其与URL 的不同在于它提供了对http 首部的访问,还可以配置发送给服务器的请求参数,可以对服务器进行读取、写入数据。它是java的协议处理器,将处理协议的细节与处理特定数据类型分开,提供相应的用户接口,完成完整web浏览器所完成的其他操作。
构建:由于其构造函数是 protected 权限,所以要么通过其子类来构建(必须实现 connect()方法,它建立与服务器的连接),要么通过 URL 的 openConnection()方法获得
方法:
?
以下属性都有对应的getter 与 setter 方法
url :创建过后不能被改变,可以通过 getURL 方法来获取这个字段的值
doInput:是否可以允许读取服务器
doOutput:是否可以写入到服务器,默认为false,只能在打开连接前设置
connected:是否已经连接,任何导致 URLConnection 连接的方法都会将这个变量设置为 true,包括 connect(),getInputStream(),getOutputStream()
useCaches:是否可以使用缓存
创建:是URLConnection的抽象子类,所以可以先获取 URLConnection 然后再进行强转
方法:
?
标签:
原文地址:http://blog.csdn.net/followmyinclinations/article/details/51926655