JAVA NIO 翻译系列(八、 SocketChannel)

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中写

JAVA NIO 翻译系列(八、 SocketChannel)_第1张图片

注意write方法是在一个循环内部的.。因为无法保证有多少个数据写到Channel中,所以不断重复直到buffer中没有要写的数据了。

非阻塞模式

你可以 设置SocketChannel为非阻塞模式,设置之后,调用connect()、read()、write()方法在异步模式下。

你可能感兴趣的:(JAVA NIO 翻译系列(八、 SocketChannel))