爲了進行非阻塞的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。