java之nio总结

/**
 * java.net包中包含的都是最原始网络应用程序设施,包括 Socket, InetSocketAddress
 *
 * java.nio包中包含最新的网络应用构建基础设施,包括buf和channel
 *
 * SocketChannel.open()方法
 * SelectorProvider.select() --> SelectorProvider实例
 *
 * ServerSocketChannel.open ===> SelectorProvider.openServerSocketChannel();
 *
 * SocketChannel.open() ===> SelectorProvider.openSocketChannel();
 *
 * SocketChannel:面向流的连接套接字,用于selectable通道;调用open()打开channel,此时channel处于未连接状态,
 * 执行I/O操作触发NotYetConnectedException异常。调用connect()函数执行连接,连接完成的channel一直存在,
 * 除非主动关闭。isConnected()函数判断套接字channel是否已连接。此channel支持异步关闭,当某个套接字的输入
 * endpoint被某个线程关闭,则另一个阻塞在读操作线程将立即返回-1.
 *
 * ServerSocketChannel: 面向监听的套接字,用于selectable通道,通过open方法创建,创建完的ServerSocketChannel已经打开,
 * 但还没有绑定,在未绑定的ServerSocketChannel执行accept方法将触发NotYetBoundException异常;绑定操作通过
 * bind()函数完成。套接字的选项设置通过setOption(SocketOption, value)函数执行。支持的选项包括
 * SO_RCVBUF SO_RCVBUF、SO_REUSEADDR SO_REUSEADDR。ServerSocketChannel是线程安全类。无法对已存在的套接字创建
 * channel.
 *
 * Channel.readBuf()
 *
 * Channel.writeBuf("write things")
 *
 * SocketChannel.read(Buf)与SocketChannel.write(Buf)的作用:
 * 接口: ReadableByteChannel
 *  从channel中读取字节序列到buf中,读取的字节序列的length等于buffer余留的缓存大小=end - pos;
 * 接口: WritableByteChannel
 *  从buf中读取字节序列写入到channel中。
 *
 *
 * 接口:Buffer
 *  属性: mark, position, limit, capacity;
 *  初始值: mark = -1; position = 0, limit = capacity; capacity由构造参数决定;
 *
 *  flip操作对属性修改: limit = position; position = 0; mark = -1;
 *
 *
 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值