参考文献:《Java疯狂讲义》(第三版)
重点:
Java提供的TCP网络通信支持;
使用Servlet建立TCP服务器;
使用Socket建立客户端;
Java网络通信机制:
1、服务器端通过ServletSocket建立监听;
2、客户端通过Socket连接到指定服务器;
3、通信双方通过IO流进行通信;
IP协议:
互联网协议,支持网间互联网的数据报协议。提供网间连接的完善功能。包括IP数据报规定互联网络范围内的地址格式
TCP控制协议:
传输控制协议,它规定一种可靠的数据信息传递服务。
IP地址:
32bit=4byte=int
分为4个8位二进制数<==>4个0~255的十进制数
端口:
16位整数
公认端口:0~1023
注册端口:1024~49151
动态和/或私有端口:49151~65535
Java基本网络支持:
InetAddress类:代表IP地址
Inet4Address和Inet6Address为其子类
getByName:根据主机获取对应InetAddress对象
getByAddress:根据原始IP地址获取对应的InetAddress对象
getCanonica:获取此IP地址的全限定域名
getHostName:获取此IP地址的主机名
getLocalHost:本机对应IPAddress
URLDecoder:将看上去是乱码的特殊字符串转换成普通字符串
URLEncoder:将普通字符串转换成application/x-www-form-urlencodedMIME字符串
URL类:
对象代表统一资源定位器,指向互联网“资源”的指针
资源:
可以是简单的文件或目录,也可以是更为复杂对象的引用。例,对数据库或搜索引擎的引用
URL由协议名、主机、端口和资源组成
URI类:解析
多线程下载核心代码逻辑:
1、创建URL对象
2、获取指定URL对象所指定资源大小
3、在本地磁盘上创建一个与网络资源具有相同大小的空文件;
4、计算每个线程应该下载网络资源哪部份
5、依次创建、启动多线程下载网络资源指定部份
若要实现断点下载,则需要额外增加一个配置文件以记录每个线程下载到哪个字节
URLConnection类表示应用程序与URL之间的通信
HttpURLConnection:对象与URL之间的Http连接
URLPermission工具类:管理HttpURLConnection的权限问题
创建一个和URL对象的连接,并发送请求、读取此URL引用的资源需要几个步骤:
1、通过调用URL对象的openConnection方法来创建URLConnection对象
2、设置URLConnection参数和普通请求属性
3、如果只发送Get请求,则使用connect方法建立和远程资源之间实际连接即可;
发送Post请求,需要获取URLConnection实例对应的输出流来发送请求参数
4、远程资源变为可用,程序可以访问远程资源的头字段或通过输入流来读取远程资源的数据
在建立和远程资源实际连接之前,可以使用......(好多)方法设置头字段
TCP协议网络编程
在通信两端各建立一个socket,从而形成网络虚拟链路
ServerSocket类
监听来自客户端的Socket连接,若没有连接,它将一直处于等待状态
半关闭Socket
原因:表示IO输出结束,通过关闭输出流来实现,在网络通信中则不能通过关闭输出流来表示,输出已经结束,因为当关闭输出流时,输出流对应的Socket随之关闭,导致Socket的输入流无法读取数据。
半关闭方法
shutdownInput
shutdownOuput
NIO实现非阻塞Socket通信
NIO提供类
Selector:
SelectableChannet对象多路复用器,同时监控多个SelectableChannel的IO状况,是非阻塞的核心
Java7 AIO实现非阻塞通信 异步Channel支持
基于UDP协议的网络编程
通信实例两端个建立Socket,两个Socket之间并没有虚拟链路
DatagramSocket代表UDP协议的Socket
MulticastSocket实现多点广播
代理服务器
Proxy:代理服务器
Proxy:代理服务器选择器提供了对代理服务器更灵活的控制
代理服务器功能
代理用户去取得网络信息
作用:
1、突破自身IP限制,对外隐藏自身IP地址
2、提高访问速度
网友评论