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()方法在异步模式下。

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

推荐阅读更多精彩内容

  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    JackChen1024阅读 12,228评论 1 143
  • 前言: 之前的文章《Java文件IO常用归纳》主要写了Java 标准IO要注意的细节和技巧,由于网上各种学习途径,...
    androidjp阅读 8,141评论 0 22
  • 简介 Java NIO 是由 Java 1.4 引进的异步 IO.Java NIO 由以下几个核心部分组成: Ch...
    永顺阅读 5,748评论 0 15
  • (转载说明:本文非原创,转载自http://ifeve.com/java-nio-all/) Java NIO: ...
    数独题阅读 4,202评论 0 3
  • java nio Java的IO体系:旧IO新IO:nio,用ByteBuffer和FileChannel读写ni...
    则不达阅读 4,298评论 0 2