Java NIO 学习笔记 - SocketChannel

为了进行非阻塞的socket通信,java nio提供Channel概念的实现。Channel概念以区别于传统的基于流概念的IO。事实上Channel概念的IO既包括非阻塞式的IO也包括阻塞式IO。要Channel完成非阻塞式IO需要实现SelectableChannel接口,与Selector关联使用。SocketChannel就是这样一个SelectableChannel。

由于,selector机制本身涉及多线程的内容,与Channel关联使用较为复杂;所以这里只以片断方式,针对SocketChannel的功能进行说明简要说明。

1。创建服务端的ServerSocketChannel

关联的ServerSocket可以侦听一个port。

 

2。将ServerSocketChannel注册(帮定)到一个selector用于等待外来socket连接。

当一个server socket channel得到一个外部socket连接时,可以将一个底层连接创建为一个SocketChannel实例。再将这个SocketChannell注册(帮定)到一个selector用于具体IO。

3。当SocketChannel可以读取或写出时则可以用SocketChannel 的方法进行IO。

读取:

 

写出:

 

 

4。另一方面,以Client方式创建SocketChannel。

 

 

 

发布了39 篇原创文章 · 获赞 1 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章