NIO实现网络实验室

NIO完成网络编程

1. Selector选择器老大
Selector

选择器,网络编程使用NIO的大哥!!!
服务器可以执行一个线程,运行Selector程序,进行监 听操作。
新连接, 已经连接, 读取数据,写入数据

Selector常用方法:

public static Selector Open();
得到一个选择器对象

public int select(long timeout);
监听所有注册通道,存在IO流操作是,会将对应的 信息SelectionKey存入到内部的集合中,参数是一个超时时间

public Set selectionKeys();
返回当前Selector内部集合中保存的所有 SelectionKey
在这里插入图片描述

SelectionKey
SelectionKey

表示Selector和网络通道直接的关系
int OP_ACCEPT; 16 需要连接
int OP_CONNECT; 8 已经连接
int OP_READ; 1 读取操作
int OP_WRITE; 4 写入操作

SelectionKey

public abstract Selector selector();
得到与之关联的 Selector 对象

public abstract SelectableChannel channel();
得到与之关联的通道

public final Object attachment();
得到与之关联的共享数据

public abstract SelectionKey interestOps(int ops);
设置或改变监听事件

public final boolean isAcceptable();
是否可以 accept

public final boolean isReadable();
是否可以读

public final boolean isWritable();
是否可以写

3. ServerSocketChannel
ServerSocketChannel

服务端Socket程序对应的Channel通道

常用方法:
public static ServerSocketChannel open();
开启服务器ServerSocketChannel通道,等于开始服务器程序

public final ServerSocketChannel bind(SocketAddress local);
设置服务器端端口号

public final SelectableChannel configureBlocking(boolean block);
设置阻塞或非阻塞模式, 取值 false 表示采用非 阻塞模式

public SocketChannel accept();
[非阻塞] 获取一个客户端连接,并且得到对应的操作通道

public final SelectionKey register(Selector sel, int ops);
[重点方法] 注册当前选择器,并且选择监听什么事件

4. SocketChannel

SocketChannel
客户端Socket对应的Channel对象

常用方法:
public static SocketChannel open();
打卡一个Socket客户端Channel对象

public final SelectableChannel configureBlocking(boolean block)
这里可以设置是阻塞状态,还是非阻塞状态 false,表示非阻塞

public boolean connect(SocketAddress remote);
连接服务器

public boolean finishConnect();
如果connect连接失败,可以通过finishConnect 继续连接

public int write(ByteBuffer buf);
写入数据到缓冲流中

public int read(ByteBuffer buf);
从缓冲流中读取数据

public final SelectionKey register(Selector sel, int ops, Object attechment);
注册当前SocketChannel,选择对应的监听操作,并且可以带有Object attachment参数

public final void close();
关闭SocketChannel

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值