摘要: 在上一篇文章中介绍了关于缓冲 区的一些细节内容,现在终于可以进入NIO中最有意思的部分非阻塞I/O。通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的Server/Client模式会基于TPR(Thread per Reques 阅读全文
posted @ 2016-08-27 18:26 简单的吗 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 缓冲区的分配 在 前面的几个例子中,我们已经看过了,在创建一个缓冲区对象时,会调用静态方法allocate()来指定缓冲区的容量,其实调用 allocate()相当于创建了一个指定大小的数组,并把它包装为缓冲区对象。或者我们也可以直接将一个现有的数组,包装为缓冲区对象,如下示例代码所 示: 缓冲区分 阅读全文
posted @ 2016-08-27 18:22 简单的吗 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 在缓冲区中,最重要的属性有下面三个,它们一起合作完成对缓冲区内部状态的变化跟踪: position:指定了下一个将要被写入或者读取的元素索引,它的值由get()/put()方法自动更新,在新创建一个Buffer对象时,position被初始化为0。 limit:指定还有多少数据需要取出(在从缓冲区写 阅读全文
posted @ 2016-08-27 18:17 简单的吗 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 在NIO中有几个核心对象需要掌握:缓冲区(Buffer)、通道(Channel)、选择器(Selector)。 缓冲区Buffer 缓 冲区实际上是一个容器对象,更直接的说,其实就是一个数组,在NIO库中,所有数据都是用缓冲区处理的。在读取数据时,它是直接读到缓冲区中的; 在写入数据时,它也是写入到 阅读全文
posted @ 2016-08-27 18:11 简单的吗 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 在客户/服务器通信模式中, 客户端需要主动创建与服务器连接的 Socket(套接字), 服务器端收到了客户端的连接请求, 也会创建与客户连接的 Socket. Socket可看做是通信连接两端的收发器, 服务器与客户端都通过 Socket 来收发数据. 1.异常类型 在了解Socket的内容之前,先 阅读全文
posted @ 2016-08-27 16:04 简单的吗 阅读(197) 评论(0) 推荐(0) 编辑