下接上一篇博客继续写。
java NIO
●Java NIO(New IO,Non-Blocking IO)是从Java1.4版木开始引入的一套新
的IO API,可以替代标准的Java IO API。.NIO与原来的IO有同样的作用和目
的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于
通道的IO操作。NIO将以更加高速的方式进行文件的读写操作。
。Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网
络编程NIO。
>|-----java.nio.channels.Channel
√--FileChannel::处理本地文件
√--SocketChannel:TCP网络编程的客户端的Channel
√--ServerSocketChannel:TCP网络编程的服务器端的Channel
√--DatagramChannel::UDP网络编程中发送端和接收端的Channel
Path、Paths和Files核心API
早期的Java只提供了一个File类来访问文件系统,但File类的功能比较有限,所
提供的方法性能也不高。而且,大多数方法在出错时仅返回失败,并不会提供
异常信息。
NO.2为了弥补这种不足,引入了Path接口,代表一个平台无关的平台路径,
描述了目录结构中文件的位置。Path可以看成是File类的升级版本,实际引用
的资源也可以不存在。
在以前IO操作都是这样写的:
import java.io.File;
File file =new File("index.html");
但在Java7中,我们可以这样写:
import java.nio.file.Path;
import java.nio.file.Paths;
Path path =Paths.get("index.html");
同时,NlO.2在java.nio.file包下还提供了Files、Paths工具类,Files包含
了大量静态的工具方法来操作文件:Paths则包含了两个返回Path的静态
工厂方法。
Paths类提供的静态get()方法用来获取Path对象:
>static Path get(String first,,String..more):用于将多个字符串串连成路径
>static Path get(URI uri):返回指定uri对应的Path路径
网络编程
网络编程概述
介绍
Java是Internet上的语言,它从语言级上提供了对网络应用程
序的支持,程序员能够很容易开发常见的网络应用程序
Java提供的网络类库,可以实现无痛的钢络连接,联网的底层
细节被隐藏在Java的本机安装系统里,由JVM进行控制。并
且Java实现了一个跨平台的网络库,程序员面对的是一个统一
的网络编程环境。
网络基础
计算机网络:
把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规
模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、
共享硬件、软件、数据信息等资源。
●网络编程的目的:
直接或间接地通过网络协议与其它计算机实现数据父,
进行通讯。
网络编程中有两个主要的问题:
>如何准确地定位网络上一台或多台主机:定位主机上的特定的应用
>找到主机后如何可靠高效地进行数据传输
网络通信要素概述
IP和端口号
IP地址:InetAddress
>唯一的标识Internet上的计算机I通信实体)
>本地回环地址(hostAddress):127.0.0.1,主机名(hostName):localhost
>IP地址分类方式1:IPV4和PV6
√1PV4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已
经用尽。以点分十进制表示,如192.168.0.1
√IPV6:128位(16个字节),写成8个无符号整数,每个整数用四个十六进制位表示,
数之间用冒号(:)分开,如:3fe:3201:1401:1280:c8f:fe4d:db39:1984
>P地址分类方式2:公网地址(万维网使用)和私有地址(局域网使用)。192.168.
开头的就是私有址址,范围即为192.168.0.0-192.168.255.255,专门为组织机
构内部使用
>特点:不易记忆
域名:wWw.baidu.com,www.mi.com,www.sina.com www.jd.com,www.vip.com
本地回路地址:127.0.0.1对应着:Localhost
t如何实例化InetAddress:两个方法:getByName(String host)、getLocaLHos
两个常用方法:getHostName()/getHostAddress()
端口号
口号标识正在计算机上运行的进程(程序)〉
>不同的进程有不同的端口号
>被规定为一个16位的整数0~65535。
>端口分类:
>公认端口:0~1023。被预先定义的服务通信占用(如:HTTP占用端口
80,FTP占用端口21,Telnet占用端口23)
>注册端口:1024~49151。分配给用户进程或应用程序。(如:Tomcat占
用端口8080,MySQL占用端口3306,Oracle占用端口1521等)。
>动态/私有端口:49152~65535。
端口号与引P地址的组合得出一个网络套接字:Socket。
网络通信协议
●网络通信协议
计算机网络中实现通信必须有一些约定,即通信协议,对速率、传输代码、代
码结构、传输控制步骤、出错控制等制定标准。
问题:网络协议太复杂
计算机网络通信涉及内容很多,比如指定源地址和目标地址,加密解密,压缩
解压缩,差错控制,流量控制,路由控制,如何实现如此复杂的网络协议呢?
●通信协议分层的思想
在制定协议时,把复杂成份分解成一些简单的成份,再将它们复合起来。最常
用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一层,而与
再下一层不发生关系。各层互不影响,利于系统的开发和扩展。
应用层提供应用程序的网络接口
传输层的基本功能是为两台主机间的应用程序提供端到端的通信。传输层从应用层接受数据,并且在必要的时候把它分成较小的单元,传递给网络层,并确保到达对方的各段信息
正确无误
网络层的主要协议有IP(Internet protocol)、ICMP(Internet Control Message Protocol,互联网控制报文协议)、IGMP(Internet Group Management Protocol万联
网组管理协议)、ARP(Address Resolution Protocol,地址解析协议
和RARP(Reverse Address Resolution Protocol,反向地址解析协议)等。涉及寻址和路由选择
物理层和数据链路层涉及物理介质访问和二进制数据流传输,
·具体协议:
TCP/IP是基于TCP和IP这两个最初的协议之上的不同的通信协议的大的集合。又称为TCP/IP协议族。
TCP-传输控制协议-TCP用于从应用程序到网络的数据传输控制。
TCP负责在数据传送之前将它们分割TP包,然后在它们到达的时候将它们重组,
IP-网际协议
IP负责计算机之间的通信。
IP负责在因特网上发送和接收数据包。
HTTP-超文本传输协议
HTTP负责web服务器与web浏览之间的通信。
HTTP用于从web客户端(浏览器)向web服务器发送请求,并从web服务器向web客户端返回内容(网页)。
HTTPS-安全的HTTP
HTTPS负责在web服务器和web浏览器之间的安全通信。
作为有代表性的应用,HTTPS会用于处理信用卡交易和其他的敏感数据。
SSL-安全套接字层
SSL协议用于为安全数据传输加密数据
SMTP-简易邮件传输协议
SMTP用于电子邮件的传输
IMAP-因特网消息访问协议
IMAP用于存储和取回电子邮件。
POP-邮局协议
POP用于从电子邮件服务器向个人电脑下载电子邮件。
FTP-文件传输协议
FTP负责计算机之间的文件传输。等等。
TCP协议:
使用TCP协议前,须先建立TCP连接,形成传输数据通道
>传输前,采用“三次握手”方式,点对点通信,是可靠的
>
TCP协议进行通信的两个应用进程:客户端、服务端。
>在连接中可进行大数据量的传输
>传输完毕,需释放已建立的连接,效率低
UDP协议:
>将数据、源、目的封装成数据包,不需要建立连接
>每个数据报的大小限制在64K内
>发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
可以广播发送
发送数据结束时无需释放资源,开销小,速度快
客户端或服务器均可主动发起挥手动作,在s0ckt编程中,任何一方执行clos0操作即可产生挥手操作。
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到序号加1。和SYN一样,一个FHN将占用一个序号
(3)服务器B关闭与客户端A的连接,发送一个FHN给客户端A。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。
URL编程
URL(Uniform Resource Locato):统一资源定位符,它表示Internet上某一
资源的地址。
它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate
这个资源。
通过URL我们可以访问Internet上的各种网络资源,比如最常见的www,tp
站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。
URL的基本结构由5部分组成:
<传输协议>:∥<主机名>:<端口号><文件名>#片段名?参数列表
>例如:
http://192.168.1.100:8080/helloworld/index.jsp#a?username=shkstart&password=123
>#片段名:即锚点,例如看小说,直接定位到章节
>参数列表格式:参数名=参数值&参数名=参数值.
●个URL对象生成后,其属性是不能被改变的,但可以通过它给定的
方法来获取这些属性:
>public String getProtocol() 获取该URL的协议名
>public String getHost() 获取该URL的主机名
>public String getPort() 获取该URL的端口号
>public String getPath() 获取该URL的文件路径
>public String getFile() 获取该URL的文件名
>public String getQuery() 获取该URL的查询名