00:01
各位同学大家好,下面呢我们继续来学习Java n IO,刚才呢我们完成了file channel,也就是文件通道的讲解,下面呢我们学习另外一个内容,那就是socket通道。首先我把socket通道相关的特点给各位先做个介绍,然后咱们来详细说明里边的几个通道。那下面我们看一下什么是socket通道,这里边给各位来介绍一下,各位知道啊,我们新的socket这个通道类,它可以运用在咱们的非阻塞模式中,并且也可以是阻塞模式,而这样的话呢,它就可以让我们的程序有更大的伸缩性,包括零和性,也就是咱们后面再写代码中,各位应该见不到这种场景,就是咱们每个连接使用一个线程,这个时候如果你有很多的线程,会造成你的上海文切换中这么一个开销,而我们目前的代码中,咱们借助新的NIO,我们可以实现什么效果呢?比如现在啊,我用一个线程或者多个线程就可以管理成百上千甚至更多的sok连接,而这么做的好处是什么呢?第一个。
01:19
管理功能更加强大,第二个它可以用很少的性能损失,甚至说没有性能损失来实现这个过程,这个各位知道它这个特点,比如NIO,它的功能肯定是特别强大的,而我们的所有这个socket个通道类,比如说咱们后面学到这个socket China server so China,包这个date ground China,他们都继承这么一个类,这个类就这个类叫of select China,这是意味着呢,我们就可以用一个select,就这个选择器来处理多个通道里面这个过程,所以这是关于它里面这个特点,各位把它知道。
02:01
然后除了这个之外,我们继续来看啊,就是在这过程中呢。咱们里边这个data gram channel,还有这个socket channel,他们都实现定义的这个读和写功能的接口,但是这个过程中呢,我们这个server s channel并没有实现,也就是说server s channel有这么一个特点,它本身并不传入数据,而是负责做什么事情呢?监听传入的连接和创建新的这个socket的这种对象,那这句话什么意思,给各位解释一下啊,比如说我们现在啊,我在这里边。我随便写一下啊,咱们这个类叫做date gra China,咱们来到它的源码中,然后各位看到里面这个基本的结构。我们看到它是不是继承了这个类呀,叫obstrali able China,另外是不是实现了很多的接口啊,这是第一个,然后再来看第二个啊,这个socket channel,看一下它的这个特点,我们到里边来看一下socket,然后把它的一会打开,大家看啊,它是不是也继承这个内,并且是不是也实现了这些接口,但是咱们注意啊,咱再看这个内server糟。
03:22
这跟刚才都完全不一样了,那我们来看一下啊,Serve到给China大家发现啊,他确实也是继承了这个类,但是它并没有像刚才这些一样,是不是没有实现里边的这些接口,所以它的特点刚才提到了,我再重复一遍啊,就这个特点。也就是server so channel,它本身并没有实现里面这个读和写功能的接口,也就是说它本身并不传输数据,而是负责监听你这个传入的连接和创建新的骚的成有对象。
04:02
所以这是里边它的第二个特点,各位知道,然后咱们继续往下看看它的第三个特点,给大家进一步来介绍一下。那第三个特点是什么呢?我们来看一下啊,这个socket和socket通道它们之间有什么关系,其实这个关系呢,很简单,我们可以理解为socket通道可以被大多数协议操作,怎么样重复使用,但是socket就不能被再次进行这么一个实现,所以这是他们一个区别,也就是这个通道可以被重复经使用,但是socket不能被重使用,而这里边大家注意啊,就是咱们全部的socket通道,比如说我们里边刚才提到的data gra channel socket channel,还有这个SOSO,他们在被实例化的时候都会创建一个对等的一个。Socket对象,而这些对象类里边他们都可以用这个socket的方法,还有这个叫get channel方法来实现里边的定过程。
05:09
所以这是它的第三个特点,各位给他知道。然后这个说完之后呢,我们再来说一下里边的最后一个特点,也就是第四个特点,第四个点是什么呢?就是我们的socket通道可以设置成一种非阻塞模式,当然也可以是阻塞模式,而这个模式设置很简单,咱们只需要调用里边一个方法,就这个otra select able China里边刚才咱们看到我们都记上它这里面有个方法,这个方法叫config block,然后设置里面那个值,如果值是true,那就表示阻塞模式,如果值是false,那就表示非阻塞模式,通过它来做这么一个设置,而这个时候各位注意啊,这个阻塞模式或者说非阻的模式,其实我们一般来讲啊,非阻塞socket通常被认为在服务端使用,但是客户端呢,在有的情况下,也可以用这种非组织模式进行实现。
06:09
所以这是关于我们说的soet通道里边的,记一个基本特点给各位再重复一遍啊。首先第一个就是我们的这个soet通道,它里边能实现更强大功能,可以通过这个selecter去监听多个通道,然后实现理赔过程。然后第二个就是这里边我们这些通道类它都继承了一个,这个叫obstract set China,并且实现了几个接口,但是这个serve socket China跟这两个不一样,它本身并不传输数据。然后第三个各位知道socket通道可以被大多数协议重复使用,但是socket他做不到。另外这里边我们都可以调用soet,还有这个get channel方法实现里面的相关的功能,然后最后就是socket通道可以设置成非阻塞模式,只需要调方法设置就可以了。所以这是关于我们提到的soet通道的新闻特点,给各位做了一个说明,然后下面呢,咱们就详细介绍一下三个常用的soet通道,包括里边那个server soet channel。
07:23
包括里面那个叫。Socket channel,以及里边这个state gra channel,那下面我们来做一个详细的说明。
我来说两句