轉載自並發編程網 – ifeve.com本文連結地址: Java NIO系列教程(八) SocketChannel
Java NIO中的SocketChannel是一個串連到TCP網路通訊端的通道。可以通過以下2種方式建立SocketChannel: 開啟一個SocketChannel並串連到互連網上的某台伺服器。 一個新串連到達ServerSocketChannel時,會建立一個SocketChannel。
開啟 SocketChannel
下面是SocketChannel的開啟檔案:
| 1 |
SocketChannel socketChannel = SocketChannel.open(); |
| 2 |
socketChannel.connect(new InetSocketAddress("http://jenkov.com", 80)); |
關閉 SocketChannel
當用完SocketChannel之後調用SocketChannel.close()關閉SocketChannel:
從 SocketChannel 讀取資料
要從SocketChannel中讀取資料,調用一個read()的方法之一。以下是例子:
| 1 |
ByteBuffer buf = ByteBuffer.allocate(48); |
| 2 |
int bytesRead = socketChannel.read(buf); |
首先,分配一個Buffer。從SocketChannel讀取到的資料將會放到這個Buffer中。
然後,調用SocketChannel.read()。該方法將資料從SocketChannel 讀到Buffer中。read()方法返回的int值表示讀了多少位元組進Buffer裡。如果返回的是-1,表示已經讀到了流的末尾(串連關閉了)。 寫入 SocketChannel
寫資料到SocketChannel用的是SocketChannel.write()方法,該方法以一個Buffer作為參數。樣本如下:
| 01 |
String newData = "New String to write to file..." + System.currentTimeMillis(); |
| 03 |
ByteBuffer buf = ByteBuffer.allocate(48); |