Java NIO中的SocketChannel是一个连接到TCP 网络套接字的通道。
可通过如下方式创建SocketChannel:
- 打开一个SocketChannel,并连接到网络上的某台服务器
- 一个新连接到达ServerSocketChannel时,会创建一个SocketChannel
打开 SocketChannel
下面是SocketChannel的打开方式的简单用法:
SocketChannel socketChannel = SocketChannel.open(); socketChannel.connect(new InetSocketAddress("http://jenkov.com", 80));
看看Tomcat#NioEndpoint是如何使用的
ServerSocketChannel serverSock = ServerSocketChannel.open(); socketProperties.setProperties(serverSock.socket()); InetSocketAddress addr = new InetSocketAddress(getAddress(), getPortWithOffset()); serverSock.socket().bind(addr,getAcceptCount());
关闭 SocketChannel
当用完SocketChannel之后调用SocketChannel.close()
关闭SocketChannel:
ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = socketChannel.read(buf);
首先,分配一个Buffer。从SocketChannel读取到的数据将会放到这个Buffer中。
然后,调用SocketChannel.read()。该方法将数据从SocketChannel 读到Buffer中。read()方法返回的int值表示读了多少字节进Buffer里。如果返回的是-1,表示已经读到了流的末尾(连接关闭了)。