码迷,mamicode.com
首页 > 编程语言 > 详细

java nio

时间:2018-01-31 20:17:23      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:serve   tag   bin   打开   通道   端口号   with   socket   post   

1 涉及到的对象

1.1 Selector

Selector用于对其所在的线程这个物理通道进行管理,换句话说,用它来管理所有需要在这个物理通道上进行通信的Channels。

创建一个Selector对象:

Selector selector = Selector.open();

1.2 Channel

Channel是进行通信的逻辑通道,类别有SocketChannel、ServerSocketChannel、DatagramChannel和FileChannel。

1.2.1 SocketChannel

连接到TCP网络套接字的通道。创建对象的方式:

SocketChannel socketChannel = SocketChannel.open();

1.2.2 ServerSocketChannel

打开并且绑定到一个ip地址和端口号上进行监听。

ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();

serverSocketChannel.socket().bin(new InetSocketAddress(8888));

while(true) {

    SocketChannel socketChannel = serverSocketChannel.accept();

    // do something with socketChannel

}

 

1.3 Buffer

读channel时,读的数据放在Buffer中;写channel时,要写的数据先放在Buffer中。一般情况下,channel和buffer是一对一的关系。

Buffer有ByteBuffer、CharBuffer等不同类型。

1.4 SelectionKey

向Selector注册一个channel会返回对应的SelectionKey,它里面保存有该channel的状态信息。

1.5 这些对象之间的关系

一个线程一个Selector,这个Selector上可以注册多个SocketChannel,但是只有一个ServerSocketChannel并且它是不注册的,是它accept产生的新的SocketChannel需要注册。每个SocketChannel对应一个Buffer。

2 java nio使用实例

 

java nio

标签:serve   tag   bin   打开   通道   端口号   with   socket   post   

原文地址:https://www.cnblogs.com/hustdc/p/8393763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!