NIO
NIO
绅士jiejie
理想的生活,就是生活的理想!
展开
-
用Nio实现一个简易聊天室
一. 创建服务器端新建一个服务器类NioServer,如下:package com.example.springboot.chatroom;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.*;import java.nio.charset.Charset;import java.util.Iterator;imp原创 2020-09-20 12:34:37 · 427 阅读 · 0 评论 -
Java NIO-如何判断通道支持哪些事件
可选择的通道提供了一个validOps()方法,该方法可以用来获取该通道支持的所有IO事件集合。IO的事件有如下几种: //可读 public static final int OP_READ = 1 << 0;// 1 //可写 public static final int OP_WRITE = 1 << 2;// 4 //连接 public static final int OP_CONNECT = 1 <原创 2020-09-15 20:46:16 · 219 阅读 · 0 评论 -
Java NIO-怎么判断通道能否被选择
只有继承了SelectableChannel类的通道,才能被选择。因为SelectableChannel抽象类提供了实现通道的可选择性所需要的公共方法,如下:原创 2020-09-15 20:17:33 · 106 阅读 · 0 评论 -
Java NIO-简单了解一下Buffer类的四个重要属性
先看下Buffer类的四个重要属性mark:可以理解为一个用来保存position字段值的字段,调用mark()方法,可将position字段值赋值给mark字段,调用reset()方法,则将mark值再复制给position字段,可以给position字段起到一个保存恢复的作用。position:位置,表示缓冲区中下一个要被读或者写的元素索引。Limit:上限,缓冲区中的最大操作位置,可以这样理解,假设缓冲区的capacity是512,但是Limit被设置为了256,那么该缓冲区的实际可用.原创 2020-09-15 19:12:41 · 403 阅读 · 0 评论 -
Java NIO-为什么说position属性指向的是下一个要被读或者写的元素索引
没有写入元素的缓冲区代码示例public static void main(String[] args) { IntBuffer intBuffer = IntBuffer.allocate(10); System.out.println("--------buffer主要属性值如下--------"); System.out.println("position=" + intBuffer.position()); System.out.println("limit=".原创 2020-09-15 19:10:23 · 232 阅读 · 0 评论 -
Java NIO-简单了解一下 flip()方法的思路
flip()方法是Buffer类提供的一个模式转变的重要方法,用来将缓冲区从写模式转换成读模式。操作示例:public static void main(String[] args) { IntBuffer intBuffer = IntBuffer.allocate(10); for (int i = 0; i < 5; i++) { intBuffer.put(i); } System.out.println("--------写模式,buffe原创 2020-09-15 19:08:26 · 752 阅读 · 0 评论 -
Java NIO-rewind()方法重新读取数据
操作示例:public static void main(String[] args) { IntBuffer intBuffer = IntBuffer.allocate(10); for (int i = 0; i < 5; i++) { intBuffer.put(i); } System.out.println("--------写模式,buffer主要属性值如下--------"); System.out.println("posit原创 2020-09-15 19:05:35 · 566 阅读 · 0 评论 -
Java NIO-缓冲区从读模式再切回写模式
操作示例:public static void main(String[] args) { IntBuffer intBuffer = IntBuffer.allocate(10); for (int i = 0; i < 5; i++) { intBuffer.put(i); } System.out.println("--------写模式,buffer主要属性值如下--------"); System.out.println("posi原创 2020-09-15 19:02:29 · 593 阅读 · 0 评论