3.1.1 打开通道 通道是访问 I/O 服务的导管。正如我们在第一章中所讨论的,I/O 可以分为广义的两大类别:
File I/O 和 Stream I/O。那么相应地有两种类型的通道也就不足为怪了,它们是文件(file)通道和套接字(socket)通道。如果您参考一下图 3-2,您就会发现有一个FileChannel 类和三个socket通道类:SocketChannel 、ServerSocketChannel 和 DatagramChannel 。 通道可以以多种方式创建。Socket通道有可以直接创建新socket通道的工厂方法。但是一个FileChannel 对象却只能通过在一个打开的RandomAccessFile 、FileInputStream 或 FileOutputStream 对象上调用getChannel() 方法来获取。您不能直接创建一个FileChannel 对象。File 和 socket 通道会在后面的章节中予以详细讨论。 - SocketChannel sc = SocketChannel.open();
- sc.connect (new InetSocketAddress ("somehost", someport));
- ServerSocketChannel ssc = ServerSocketChannel.open( );
- ssc.socket( ).bind (new InetSocketAddress (somelocalport));
- DatagramChannel dc = DatagramChannel.open( );
- RandomAccessFile raf = new RandomAccessFile ("somefile", "r");
- FileChannel fc = raf.getChannel();
在 3.5 节中您会发现,java.net 的socket类也有新的getChannel() 方法。这些方法虽然能返回一个相应的socket通道对象,但它们却并非新通道的来源,RandomAccessFile.getChannel() 方法才是。只有在已经有通道存在的时候,它们才返回与一个 socket 关联的通道;它们永远不会创建新通道。 Java nio入门教程详解(十五)
0
0
我们认为:用户的主要目的,是为了获取有用的信息,而不是来点击广告的。因此本站将竭力做好内容,并将广告和内容进行分离,确保所有广告不会影响到用户的正常阅读体验。用户仅凭个人意愿和兴趣爱好点击广告。
我们坚信:只有给用户带来价值,用户才会给我们以回报。
|