随笔分类 -  java网络编程

Java NIO系列教程(十二) Java NIO与IO
摘要:当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。 Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我会更详 阅读全文

posted @ 2017-09-19 10:45 云潇洒 阅读(294) 评论(0) 推荐(0) 编辑

Java NIO系列教程(十一) Pipe
摘要:Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。 这里是Pipe原理的图示: 创建管道 通过Pipe.open()方法打开管道。例如: 1 Pipe pipe = Pipe.open(); 1 P 阅读全文

posted @ 2017-09-19 10:44 云潇洒 阅读(225) 评论(0) 推荐(0) 编辑

Java NIO系列教程(九) ServerSocketChannel
摘要:Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。 这里有个例子: 01 ServerSocketChannel s 阅读全文

posted @ 2017-09-19 10:43 云潇洒 阅读(166) 评论(0) 推荐(0) 编辑

Java NIO系列教程(十) Java NIO DatagramChannel
摘要:Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。 打开 DatagramChannel 下面是 DatagramChannel 的打开方式: 1 DatagramChannel ch 阅读全文

posted @ 2017-09-19 10:43 云潇洒 阅读(273) 评论(0) 推荐(0) 编辑

Java NIO系列教程(八) SocketChannel
摘要:Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel: 打开 SocketChannel 下面是SocketChannel的打开方式: 1 SocketChannel socketChannel = SocketChan 阅读全文

posted @ 2017-09-19 10:41 云潇洒 阅读(264) 评论(0) 推荐(0) 编辑

Java NIO系列教程(七) FileChannel
摘要:Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使 阅读全文

posted @ 2017-09-19 10:39 云潇洒 阅读(463) 评论(0) 推荐(0) 编辑

Java NIO系列教程(六) Selector
摘要:Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。 下面是本文所涉及到的主题列表: 为什么使用Selector? 仅用单个线程来处理多个Channels的好处 阅读全文

posted @ 2017-09-19 10:35 云潇洒 阅读(348) 评论(0) 推荐(0) 编辑

Java NIO系列教程(五) 通道之间的数据传输
摘要:在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。 transferFrom() FileChannel的transferFrom()方法可以将数据从源通道传输到FileCh 阅读全文

posted @ 2017-09-19 10:34 云潇洒 阅读(251) 评论(0) 推荐(0) 编辑

Java NIO系列教程(四) Scatter/Gather
摘要:Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作。分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Chann 阅读全文

posted @ 2017-09-19 10:33 云潇洒 阅读(231) 评论(0) 推荐(0) 编辑

Java NIO系列教程(三) Buffer
摘要:Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。交互图如下: 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。缓冲区实际上是一个容器对象 阅读全文

posted @ 2017-09-19 10:32 云潇洒 阅读(297) 评论(0) 推荐(0) 编辑

Java NIO系列教程(二) Channel
摘要:Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。 正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示: Cha 阅读全文

posted @ 2017-09-19 10:30 云潇洒 阅读(296) 评论(0) 推荐(0) 编辑

Java NIO系列教程(一) Java NIO 概述
摘要:一、阻塞IO与非阻塞IO 阻塞IO: 通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的Server/Client模式会基于TPR(Thread per Request),服务器会为每个客户端请求建立一个线程,由该线程单独负责处 阅读全文

posted @ 2017-09-19 10:29 云潇洒 阅读(954) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示