网络编程-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

posted @ 2020-04-29 11:58  小海_macro  阅读(106)  评论(0编辑  收藏  举报