Java NIO SocketChannel是一個連接tcp 協議的socket的channel。跟以前的java 網絡socket是一樣的,有兩個方式去創建。
1)連接一個服務端,打開一個SocketChannel
2)當一個連接抵達ServerSocketChannel,SocketChannel可以被創建
打開SocketChannel
SocketChannel socketChannel = SocketChannel.open();
socketChannel.connect(new InetSocketAddress("http://jenkov.com", 80));
關閉SocketChannel
socketChannel.close();
?從SocketChannel讀
ByteBuffer buf = ByteBuffer.allocate(48);
int bytesRead = socketChannel.read(buf);
read方法讀取數據從channel到buffer,返回值表示多少個數據讀到buffer里面了,如果返回-1,代表流已經讀取到頭了,或者連接關閉了。
向SocketChannel中寫
注意write方法是在一個循環內部的.。因為無法保證有多少個數據寫到Channel中,所以不斷重復直到buffer中沒有要寫的數據了。
非阻塞模式
你可以 設置SocketChannel為非阻塞模式,設置之后,調用connect()、read()、write()方法在異步模式下。