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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章