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

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

非阻塞模式

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容