美文网首页
JAVA NIO 翻译系列(二、Channel)

JAVA NIO 翻译系列(二、Channel)

作者: shadowCc | 来源:发表于2017-08-09 17:58 被阅读18次

JAVA NIO Channel 跟BIO中的steam有点像,但是又有一些不同点:

1)你可以同时对channel进行读和写,而sream是单向的(读或者写)

2)channel可以读和写是异步的(要不怎么能叫NIO呢   O(∩_∩)O~)

3)无论channel的读还是写,都是跟buffer紧密相关的。

基于上面提到的几点,你可以把数据从channel中读到buffer中,也可以从buffer中把数据写到channel中。

Java NIO: Channels read data into Buffers, and Buffers write data into Channels

Channel 实现类:

FileChannel可以从文件中读数据,也可以写数据到文件中。

DatagramChannel是基于UDP协议的网络的读写

SocketChannel是基于TCP协议的网络读写

ServerSocketChannel用于监听TCP的链接,像web服务器一样,当有一个连接过来的时候,一个SocketChannel就会被创建。

 下面是一个基本的例子代码

注意flip方法,一开始读取数据到buffer中,然后flip它,再get数据。后面会详细讲这个方法。

相关文章

网友评论

      本文标题:JAVA NIO 翻译系列(二、Channel)

      本文链接:https://www.haomeiwen.com/subject/rhbfrxtx.html