张伯毅的专栏

人生就是一道证明题,证明我们的存在不是偶然....

NIO与Socket笔记 :AIO的使用

AIO 也叫NIO2.0 是一种非阻塞异步的通信模式。在NIO的基础上引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的实现。 AIO 并没有采用NIO的多路复用器,而是使用异步通道的概念。其read,write方法的返回类型都是Future对象。而Future模型是异步的,其核心思...

2019-04-07 20:01:10

阅读数 80

评论数 0

NIO与Socket笔记 :Selector 类的使用

Selector类的主要作用是作为 SelectableChannel对象的多路复用器。 可通过调用 Selector类的 open()方法创建选择器,该方法将使用系统的默认 Selector­ Provider创建新的选择器。 也可通过调用自定义选择器提供者的 openSelector()方法...

2019-04-07 18:46:36

阅读数 62

评论数 0

NIO与Socket笔记 :Selector 的使用

选择器与 I/O 多路复用 Selector选择器是 NIO 技术中的核心组件,可以将通道注册进选择器中, 其主要作用就 是使用 1个线程来对多个通道中的已就绪通道进行选择,然后就可以对选择的通道进行数据 处理,属于一对多的关系, 也就是使用1个线程来操作多个通道,这种机制在 NIO 技术中...

2019-04-04 18:44:27

阅读数 67

评论数 0

NIO与Socket笔记 :实现Socket 通信[ 四 ]

基于UDP的Socket通信 UDP (User Datagram Protocol,用户数据报协议)是一种面向无连接的传输层协议,提供不可靠的信息传送服务 。 无连接是指通信时服务端与客户端不需要建立连接,直接把数据包从一端发送到另 一端,对方获取数据包再进行数据的处理 。 UDP...

2019-04-04 15:52:53

阅读数 37

评论数 0

NIO与Socket笔记 :实现Socket 通信[ 三 ]

Socket 类的使用 ServerSocket类作用是搭建 Socket的服务端环境, 而 Socket类的主要作用是使 Server 与 Client进行通信。 绑定 bind 与 connect 以及端口生成的时机 public void bind (SocketAddress b...

2019-04-04 15:08:44

阅读数 51

评论数 0

NIO与Socket笔记 :TCP报文到达确认(ACK)机制

SYN表示建立连接, FIN表示关闭连接, ACK表示响应 TCP数据包中的序列号(Sequence Number)不是以报文段来进行编号的,而是将连接生存周期内传输的所有数据当作一个字节流,序列号就是整个字节流中每个字节的编号。 一个TCP数据包中包含多个字节流...

2019-04-04 10:47:06

阅读数 78

评论数 0

NIO与Socket笔记 :实现Socket 通信[ 二 ]

TCP 连接的 3 次“握手”过程 1 )客户端到服务端 : 我要连接 。 2 )服务端到客户端:好的,已经连接上了 。 3 )客户端到服务端:收到,确认已连接上了 。 1、client发送SYN到server,将状态修改为SYN_SEND,如果server收到请求,则将状态修改为SYN_...

2019-04-03 18:36:04

阅读数 87

评论数 0

NIO与Socket笔记 :实现Socket 通信[ 一 ]

基于TCP的Socket通信 TCP 是一种 流协议,以流为单位进行数据传输 。 什么是长连接? 长连接可以实现当服务端与客户端连接成功后连续地传输数据,在这 个过程中,连接保持开启的状态,数据传输完毕后连接不关闭 。 长连接是指建立 Socket 连 接后,无论是否使用这个连接,...

2019-04-03 17:01:34

阅读数 107

评论数 0

NIO与Socket笔记 :NetworkInterface

NetworkInterface类表示一个由名称和分配给此接口的 IP地址列表组成的网络接口,也 就是 Networklnterface类包含网络接口名称与 IP地址列表。 该类提供访问网卡设备的相关 信息,如可以获取网卡名称、 IP 地址和子网掩码等 。 Socket 不是协议,是一种实现计算...

2019-04-03 14:48:31

阅读数 31

评论数 0

NIO与Socket笔记 :FileChannel

Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel...

2019-04-03 14:19:33

阅读数 16

评论数 0

NIO与Socket笔记 :MappedByteBuffer

java io操作中通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理大文件,不过java nio中引入了一种基于MappedByteBuffer操作大文件的方式,其读写性能极高。 MappedByteBuffer map(FileChannel.M...

2019-04-03 13:50:37

阅读数 16

评论数 0

NIO与Socket笔记 : Filelock 类的使用

FileLock类表示文件区域锁定的标记。 每次通过 FileChannel类的 lock()或tryLock()方 法获取文件上的锁定时,就会创建一个 FileLock (文件锁定) 对象。 文件锁定对象最初是有效的。 通过调用 release()方法、 关闭用于获取该锁定的通道, 或者终止 ...

2019-04-03 11:28:08

阅读数 25

评论数 0

NIO与Socket笔记 : 通道和 FileChannel 类的使用

在 NIO 技术中,要将操作的数据打包到缓冲区中,而缓冲区中的数据想要传输到目的 地是要依赖于通道的 。 缓冲区是将数据进行打包,而通道是将数据进行传输,可见两者是形 影不离的 。 NIO 技术中的数据要放在缓 冲 区中进行管理,再使用通道将缓冲区中的数据传输到目的地 。 从缓冲...

2019-04-02 18:08:56

阅读数 29

评论数 0

NIO与Socket笔记 : CharBuffer 类的 API 使用

CharBuffer类提供一个字符( char)序列缓冲区 。 存储方式依旧为数组方式存储.数组类型为 char 类型. 新增依旧是根据下标直接对数组进行操作,通过 postion 指针进行指向. public CharBuffer put(char x) { h...

2019-04-02 09:46:55

阅读数 39

评论数 0

NIO与Socket笔记 : 复制缓冲区

ByteBuffer duplicate()方法的作用:创建共享此缓冲区内容的新的字节缓冲区 。 新缓 冲区的内容将为此缓冲区的内容 。 此缓冲区内容的更改在新缓冲区中是可见的,反之亦然 。 在创建新的缓冲区时,容量、限制、位置和标记的值将与此缓冲区相同,但是这两个缓冲区 的位置、界限和标记值...

2019-04-01 18:05:33

阅读数 22

评论数 0

NIO与Socket笔记 : 转换为 CharBuffer字符缓冲区及中文的处理

asCharBuffer()方法的作用:创建此字节缓冲区的视图 ,作为 char缓冲区。 新缓冲区的 内容将从此缓冲区的当前位置开始。 此缓冲区内容的更改在新缓冲区中是可见的 ,反之亦 然 ;这两个缓冲区的位置、 限制和标记值是相互独立的。 新缓冲区的位置将为 0,其容量和 限制将为此缓冲区中所剩...

2019-03-29 14:32:47

阅读数 97

评论数 0

NIO与Socket笔记 : Socket、NIO 理论

一、Socket 理论 Socket编程其实就是实现服务端与客户端的数据通信,不管使用任何的编程语言, 在 实现上基本上都是4个步骤: 1建立连接;2请求连接; 3回应数据; 4结束连接,这4个 步骤的流程图如图 1-3所示。 在学习 NIO 之前,必须先学习 Socket,因 为 ...

2019-03-29 12:31:04

阅读数 30

评论数 0

提示
确定要删除当前文章?
取消 删除