网络编程之NIO
概述: 网络编程IO主要分为:同步、异步、阻塞、非阻塞。 在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的I/O速度非常慢,而在Java 1.4中推出了NIO,这是一个面向块的I/O系统,系统以块的方式处理处理,每一个操作在一步中产生或者消费一个数据库,按块处理要比按字节处理数据快的多。 在NIO中有几个核心对象需要掌握:缓冲区(Buffer)、通道(Channel)、选择器(Selector)。 Channel channel是个双向通道和BIO的Stream不同,Stream是单向通道。但他们都用于数据的读写。 Channel的实现 FileChannel (从文件中) DatagramChannel (从UDP中) SocketChannel (通过TCP读写) ServerSocketChannel (监听新进来的TCP连接) 打开 SocketChannel: SocketChannel socketChannel = SocketChannel.open(); socketChannel.connect(new InetSocketAddress("http://jenkov.com", 80)); 从 SocketChannel 读取数据: