网络编程-20200427
BIO、NIO、AIO
网络协议:
【1】已经约定熟成的,适用于绝大部分情况的标准。
【2】公司或者闭门、组织根据自己需求设计的协议。
【3】设计目的:传递数据,数据在传递期间,需要进行响应的封装和拆封,尤其重要的是:如今的网络环境日益复杂,在必要的qingkua你改下,需要对数据进行加迷和解密。
BIO :阻塞通讯
[1]通讯的过程中,必然存在一个发送发,一个接收方。
[2]发送数据之前,首先明确目标服务器的地址:ip\域名
[3]为了方便记忆网络地址——域名。通过DNS服务器来进行解析。【一个服务器,提供庞大的map,key:域名,value:ip地址】
[4]首先访问的是houst文件,如果访问不到,返回DNS解析。
[5]端口:地址 + 收件人;IP + PORT;每一台接入的计算机,mei个应用的端口都是不能重复的。
InetAddress.getByName()
[1] getHostName()
[2] getHostAddress()
[3] getLocalHostName()
Socket:TCP/IP
【1】三次握手:
1:请求方向服务方询问:hi?——判断服务方是否在线;
2:服务方接到请求回复:收到了
3:请求方最后确认:建立连接。
4:三次握手完毕,正式建立连接。——目的:保证数据在传递的时候,绝对安全,能够有序、有效、完整的传递给对方。——优点:保证数据的绝对安全。
【2】实现Socket【支持不同工程之间的通讯!!】
【4】
2:明确客户端——Socket –InetAddress.getByName(‘localhost’).getHostAddress()[与那成主机地址] –port[跟客户端接口保持一致]
3:服务器和客户端之间,通常是客户端首先主动向服务器发起请求。
4:通讯时通过:数据流来完成的。不要用缓冲流,因为其本身就有缓冲!--
note:
【1】保障客户端的ip和端口和服务器一直:正常建立通讯。——三次握手!
【2】任何一个应用既可以是服务器,也可以是客户端。保障双向通讯!——推送
【3】流一旦关闭,将同时关闭socket连接
【4】字节流略显繁琐——二进制流 || 序列化与反序列化
-二进制流:不需要实现准备序列化对象
-序列化和反序列化:需要有序列化对象。好处:可以直接将数据放入对象当中。确定:需要在不同的工程当,建立相同的序列化对象。——必须包命路径完全一致
【5】一个单线:持续通讯:通过手机用循环来保证通讯的持续。
工具:wireshark