00:00
各位,我们继续来写它的客户端来编写。我们现在写一个叫my plan。客端。那客户端代码呢,我们。按照原先的这个思路完成就可以了,首先是不是我们要六一个。Even the loop。VR客户端这边呢,只需要一个就可以了,所以说直接取个密招group就行。J p group。No去掉。下面呢,仍然是踹下。Finally最后,我们始终是要关闭这一个线程组的。如果有异常,我们将其抛出。接着往下写TRY里面的内容,又一个boot。诶,写错了strip。VR拿到。
01:00
拿到拿到过后呢,这边我们看一下。Bootrap。Main b。接着继续往下走,那就是什么呢?Boot strip.group把我们的boss。Group啊,Strip放进去,然后下一个。这个时候它的时间内就是NIO。什么呢?就是我们所说的socket China。Class。对吧,然后我们直接再写一个点handler。Handler这里面呢,大家看,因为它是它自己就是一个线程组,所以说我们直接把处理器加到这一个线程组里面就可以了,那这时候呢,我们仍然先写一个空啊,因为还没写,我们仍然是自定义,自定义一个什么呢?初始化对象。
02:00
初始化类。Grow up。那下面我们来开始写自定义的初始化类,同样在这新建一个Java,取个名字,这个名字呢,咱们就叫什么呢,叫做my client。MY这样写。My client。是int对吧,My kindit。I。ALIZER。看一下。MY,好,没问题。同样我们也让他去继承什么呢?对,我们现在让他继承China。同样这里面呢,我们把它的时间的类型写出来,叫刷。Socket turner。继续往下写。
03:00
实现方法啊,Initial China,接着继续,那下面呢,我们仍然是按照原先这个思路。为什么老是引的是这个吧。我们按照以前的思路走就行了。拿到拍烂。好啪啪的拿到以后呢,我们这个地方应该是要干什么呢,加入这个地方,因为我现在是要出战,所以说在。在这个出战之前呢,我需要加入一个什么呀,加入。加入一个出战的。出战的handler干什么呢?对数据,对对这个数据进行一个什么呢?进行一个编码。呃,进行一个编码。那么再加入什么呢?再加入一个自定义的。自定义的handler干什么呢?这个地方处理业务逻辑。
04:02
处理业务。对不对?好,肯定我们先把这个业务逻辑的数据处理好了过后,然后再交给我们这个编码去去进行处理,所以说在初代的时候呢,其实是先走自己的handle,然后再走这个出站这个编码的handle好编码的handle呢,我们肯定要写一个了,来再写。这次呢,我写一个这个出战的hundred的改革名字就叫my long To Bit encoder。对不对,不是低了MY什么呢?My nu,就是我有一个nu这样的数据类型,我要转成bit,能理解。N口袋。口的。好,Co n。那同样我们也让他去继承,谁要message,这个时候呢,要继承另外一个叫message。Age two。
05:04
No。同样这边呢,我们直接写个诺。啊,这个大家看能否理解哈,同样这是我们要去实现它的一个方法。这个就叫n code,就是我们的什么呀,叫做编码。这是编码的方法,那怎么编码呢?其实思路跟原先是非常相相似的,相似的我就直接这样写就行了,来这个这个地方呢,大家看,因为我在这已经直接拿到一个浪了。我已经直接拿到一个浪了,所以说我这里呢,就直接转一下就可以了,我这写个方法,我这写一个调用,说什么什么什么被调用好吧,这样大家可以看到调用的顺序是怎么样子的,我们可以写叫做encoder,就是minor。My not To Bed enco里面的n code的方法被调用。背。
06:01
被调用,待会呢,我们看一下顺序是什么样子的,好好同学呢,我们可以把信息打出来一下。就是你这个值到底是多少。MSG等于加mst。因为这地方我们已经是一个浪了,其实没有必要再进行编码,对吧,只是我我把这个写到这呢,大家可以看到这个这个一个完整的流程。如果你将来要对这个浪进行改变,那这个方法就有用了。我们直接把它out right now写出去就行了。Right WR,看看啊,按这个浪的形式写出去,Right now。好的。所以。放进去,这是我们自己写的,Long To Bit and good,好,同学们,那现在呢,这个这边写完了以后,是不是客户端这边我们就可以加东西进去了,来在这边my client这个单词没有写对。
07:01
C咱们应该是大写。大家写一下。好,现在呢,我们来加东西,首先大家想一想,对于你这个initializer里面,你先要加什么东西呢?加入一个编码器,好,那就是排放点爱的。又一个my my two。Bitco对不对,然后呢,再加入我们自己自定义的一个handle,我们自己的。自定义的这个handler还没写吧,好像对还没写啊,没有写,所以说我们还要写这个自定义的handler。那我们再写一个自定义的,取个名字叫什么呢?叫my plan。My client。Handle,没问题吧,同学们,那在这里面呢,我们写稍微简单一点,就是给他发一个竖过去就行了。来。
08:00
A,我们直接继承simple。China in b handle类型呢,我们指定是now,我们是直接按long的方式来进行发送。好实现一个方法。好,这边READ0READ0我们就直接这样写了哈,就是READ0是读取,那我们发送的时候应该是重写哪个方法呢?我们是不是应该重写那一个叫做China active对不对,我们应该重写这个方法。叫重写。这个还记得吧。Active发送什么呢?发送数据。那我现在重写一下。在这儿,China。对,那这里面我们就怎么写呢,这样写就行了,来提示一句话啊,跟着老师思路写句话。就说发送数据了,就是我们的这一个my client handler。发送数据。
09:00
发送一个什么数据呢?CTx.right and。我们就这样写,同学们知道我们再发一个消息的,发一个数据的时候呢,我们是要。往这一个bit buffer里面去发,所以说我用on。Oned their copyright。Co buff。好,我要发这么一个东西哈。发一个我们想一想。呃,这次咱们就干脆简单一点哈,先不去发这种字符串转的,咱们就干脆这样发就行了。直接发一个这样数据,待会呢,我们再看看发字符串会有什么效果,直接写个right。直接write and flash就行了。就写123456L,对,这样我发送什么呢?我直接发送的是发送的是一个什么呢?No。发送的是一个no。好,就说我一旦连接上,我就发一个none过去,这个none呢,他首先会经过哪一个呢?他自己这处理完了过后,他先走我们的这一个my not。
10:11
对不对,然后这个数据呢,就写到so里面去发过去了。发过去,服务器端再进行接收和处理,那现在我们在里面可以加东西。加上我们的拍烂。点new我们的my client。Handler,没同学们好,这边就OK,再检查一下客户端这边呢。China这边写到这好,这个里面可以加东西了,说这个时候connect里面就可以往往这里面放东西进去了,怎么放呢?就另一个my connect Internet。好,下面接着继续写那下面的代码,当然。就比较简单了,就不trap点什么呀,Connect。K,我们写上。我们要连接的。
11:00
IP意思就是。端口号是7000,还记得吧,然后C异步处理V2拿到一个China future。下面呢,仍然是一个做做一个关闭的处理。拿到一个点close.s。客户端就这样子,再把客户端走一下my client里面呢,呃,他这通过一个创建一个new new了一个my client English在这个里面。在一个初始化对象里面,我们加入了。一个出战的handle德进行一个编码。对,把now转成BY。把now转成一个,具体来说呢,其实就是这写的。是不是这right一个浪进去,回到这边来,然后在紧接着呢,我们这边又还有一个my handler,这个地方是处理业务逻辑的。就是这个代码这边我也写的很简单,我还没读哈,我只发过去。
12:03
待会我们再处理读的问题,那么right and flash呢?我发出了一个123456这么一个长整型的数据,好,下面我们再看这边,回到服务器这端,服务器这端呢,它是怎么做的呢?是不是他也要加入?他自己相关的处理器,那这个地方我们已经写好了,叫my server。Initial。好,我们会,我们进到这个里面去看一下他做了哪些工作,在这里面他是不是。还没有往里面加呀,是不是我们这边应该加东西了吧,因为这些东西已经写好了,现在呢就可以往里面添加,我们先加入一个解码器,解码器就是六一个MY什么呢?Bit。To not。是不是,是不是我们还要写一个干什么呢?这个服务器端还要编写一个自定义的handle。
13:00
对,一样的道理嘛,自定义的handler处理嘛,处理业务逻辑。处理业务逻辑。逻辑。好的。那这个是不是已经也写好了,叫my serve handle,你看我做了什么处理,其实就是读了一下客户端发过来,发过来数据是吧,按照让的方式来进行这个接收的,好,这边呢,也很简单,就这样拍拍烂点,ADD last。又一个my server,对MYMY。Server。Handler。好的,同学们。此时此刻,我们这一个。就是这条线就写完了什么呢?客户端发送一个浪到服务器端,我们还做了一个客户端这边做了编码,而服务器端做了解码。我们来运行一下,看效果怎么样。看效果怎么样。
14:00
来运行值,我们先运行服务器端。先运行服务器端,再运行客户端,看看客户端是否能够拿到那一个。让数据。好,呃,这边呢,服务器端已经启动了,我们运行。好,发过去。好,我们可以看到。可以看到服客户端,就这个客户端发了个从这个客户端读取到里面呢,123456对吧,那么在这一块呢,我们也看到调用顺序是不是很清晰的呀。谁先被调用,是不是我们先调用的是my my command handler,发送数据,就是因为他这别是处于一个出战的顺序,它是从这个尾部开始往这边走的,因此呢,他先调用的是我们的my client handler,然后在这个在这条这个out boundund handle。
15:09
的前一个呢,就是我们的这个nco。是吧,就是这个我们的编码器,最后把这个信息发出去,说顺序呢,跟我们想象的应该是一样的,再看一下,主要把这个顺序搞懂。是不是先调用的是它呀。是不是,然后再调用我们的哪一个呢?就是我们的编码器,就是my long tobe这吧。对,最后把数据发出去,那反过来我们再来看看服务器端,它的调用顺序是什么样子的,我们也分别输出一个信息。这个信息read read这个方法呢,肯定是已经有信息输出了,我们在my server。他这边叫做my bed to know,这边我们也打一句话。同学们看一下,我在这儿说出一句话,就说my bed to my。
16:03
To none被调用。被。调用那被调用。我想问同学们一个问题,大家觉得是哪一个handle,呃,Handle被调用是他先被调用,还是我们的这个被先被调用,大家想一想到了同学们想到了服务器端是不是它就是一个入站的顺序,那入站呢,它是怎么样啊,它是从这个头往里面来执行的,他入然是从这个链表的头开始读,那大想你在加这个。加这个,嗯。Handler的时候,在server加handler,哪个是头达斯尾,是不是这个相当于在前面啊,这个是在后面,因此它应该调用的先是调用的这个handler。My bed to none handler,然后再调用我们自定义的my server handler能理解吗?那我们来执行一下。
17:01
把它关闭了。这边呢,我们也关闭了,好吧,再运行一下同学们。让一下。让起来。让起来。让起来过后呢,我们再来执行client端。看一下这两者是不是跟我们分析的一样,客户端这边已经讲过了,不再多说,看这边同学们看这边是不是先调用的是deco,因为这个时候对他来说是入站,入站是我们的从这个pipeline的这个头开始走,所以他先调用的是前面的decoder,然后再调用我们后面的这一个。如果同学们有兴趣的话呢,你可以在这下个断点。你下你在这下个断点,你会看到ctx它,呃,从这个C,从这个拍拍烂啊,其实你可以从拍拍烂里面去看。当你从这个pipe烂,就是这边我们也可以把这个拍PE烂打出来给他家看一下啊,这就不用看了吧,就是你你把这个pipe烂拿到拍PE烂呢,你可以看到这个拍on烂的最前面的其实是。
18:03
这个my be not decoder,再是我们的my serve,所以他从头头调用的话呢,先调用是他明白了。好同学们,那第一个功能我们就讲完了,就是客户端发送浪到服务器端,那现在呢,我们还想完成一个服务器端发送浪,回送一个浪给客户端。对,这个功能又怎么实现呢?好,我们下一个视频来讲解。
我来说两句