00:00
我们一步一步完成它,那首先呢,我们开发的顺序很简单,我们先写服务器端的这个东西,先让他先听起来,打开我们的这种代码。在main这边我们新建一个啊,在这地方我们新建,呃,在下面我们新建一个包包,我们新建一个包包,这个名字呢,我们就叫chicken啊yellow chicken,好写一个包。好。Yellow啊,Chi kn啊。好,这边呢,我们建个包就在这儿,下面呢,我们来开始建东西了,哦对了,刚才有一个最大的问题我还没有分析,有一点点东西就是我们在进行这个通讯的时候,就是这边发消息给他,他这边发消息给他,我们在本地发的是字符串。是不是我们在本地,我们昨天讲的全是发到字符串和哈罗什么的,但是一旦到了网络字符串不能直接发,所以说这两条线就是这个蓝色的线,这个蓝色的线和这个黄色的,这个紫色的线呢,需要有一个东西来做这个处理,就是我们所说的协议。
01:15
中间我们需要创建一个新的玩意儿。啊,新的一个什么东西叫做协议。这个协议就很有用了。那么这个协议呢?呃,我们会这样子定义啊,一般来讲呢,网络通讯最简单方式就是用这个case类,就是用样例类来充当协议,比较简洁,因为样例类本身呢,它实现了序列化的东西,所以这个协议呢,我们会定两个协议,第一个协议就是就是客户端,客户端发送给服务器端的协议。服务器端的这个协,这个这个协议,这个协议再说一遍啊,它其实就是一个样例类的对象,就是样例对象啊,样例类的就样例类的,样例类的这个对象。
02:05
那么同时呢,我们还要写一个协议,就是服务器端,服务器端发送给客户端的这个信息,或者叫协议。这个协议就是信息,因为说老师可能有同学说老师,那你为什么不直接发字符串呢?是这样子的,如果发字字符串就很low了,因为你将来你这个信息不仅仅只是一个,我们首先看啊,假设字符串能能能实现,咱们也不好。因为你一个字符串的描述能力太弱了。你只能是个哈啊或者ABC啊什么的,但是将来假设我们发的信息要带这个ID号,要带他的一些,比如说他的一些其他信息,比如他的年龄,他的性别,如果你用字符串发送,这边解析也很困难。所以说我们在发送的时候,肯定是以对象的形式发的,那么这个时候呢,用样例类就特别好,为什么样例类本身实现了序列化。
03:02
或者就就是序列化,那就简单easy了,所以说将来我们写这个腾讯的这个协议,你要自己去定好,所以说我们就应该有三大块文件,一个是客户端,服务器端和中间的协议,好同学们,那有这个东西我们就来开始建包,首先我建第一个包叫server。这边我们专门写我们server代码。OK,紧接着我们还要建这个包。来,同学们,我再写一下yellow,好,我们叫CLA。课文好,紧接着呢,我们还要建一个包包,为什么还要建一个包呢?呃,建一个包就是说专门放协议的,那除了协议可能还我们还有通用的地方,所以说我一般会给他取个叫common。啊,这个common是大家通用的,将来这段common这段代码呢,是怎么呢?这客户端会拿一份,服务器端也会拿一份,就是大家都要有这个通用的地方,好写到这好,现在呢,我们就来开始写,第一这个server这边的代码,首先我们我们新建一个scan。
04:10
我们取个名字叫yellow,这是ickn yellow。啊,小yellow。也。Or yellow chicken server?啊,听其名而知其意,然后这样就写进去了。好,写进去以后呢,首先我们将其继承为一个actor,这个大家应该很清楚的知道,就是一个actor。跑车代码呢,很简单。好,引进去act,那act完了过后呢,这里面肯定是有方法的。好,这个方法,这个方法将来要做的事情哈,就是呃,我习惯上还是把它这个写出来,就是这个方法将来就是我们这个示意图里面的。这个部分。好的。好,那么我们还有一个主程序。
05:02
主程序。那么主程序就是我们程序的入口嘛,你可以理解是个入口,好,那也简单,我们这次呢,也不取别的名字,就跟他保持一致,用object来做。Object yellow没问题,诶写一下啊,稍等记,当这个时候呢,我们简单一点就继承一个APP这样来做。都见一下好,这边要做什么事情呢?刚才我已然分析过了,第一步先创建actor是什么?这个对我们来说很easy,好了,这个就是先创建我们的actor system。Act,好,呃,简单吗?非常简单,我们上次刚刚写过简单了啊,那就actor。Actor system,呃,那就写上一个名字嘛,将来这个名字是很有用的,同学们。将来这个家伙很有用,说老师为什么这个有用呢?同学们这个名字直接取决于将来同学们这个地方,就是你将来这个客户端要持有或者得到这个服务器端,这个actor,这个名字就至关重要。
06:11
如果这个名字你不匹配,将来是找不到的,好多初学者这个地方是没有搞明白的,就是在我们这个actor里面呢,他认为一个actor是一个什么呢?是一个资源。同学们在前面学Java的时候,老师讲过一个叫URL的东西,有听过这个东西吗?肯定听过URL这个叫什么呀?我找一个同学说URL是什么呀?中康,你知道这个什么幼儿园叫什么?翻译成中文的话是什么?地址这个说的太low了啊,他说叫地址,那地址你们肯定全部都是HTPC这个是吧,这个叫统一资源定位。统一统一资源定位,就说在你要定位定位。这个东西呢,它是可以定义在整个这个网络上的一个唯一资源,那么在我们这个阿卡里面,它会怎么认为呢?他会认为你的一个act其实是一个资源,它的地位等价于像我们网络的一个图片一样。
07:10
诶这样就能找到他,诶他通过一个整个地方就能找到这个act,其中这个cx system呢,就是一个先去定位的一个核心,好我就写一段代码,那么我全起个名字叫server。我就叫server好,然后呢,VAR来走一个没问题。那么这个这个private我先不要啊,因为我没有必要做成私有的,好这个做完以后呢,我们就创建什么呢,来了,我们创建yellow check server这个actor。Actor和和返回,返回这个actor的一个没毛病吧,简单的很,Server。点我们前面讲过ii actor,这个是用哪个写的actor of没毛病,那就写prop。
08:02
好,此时此刻。他因为不需要持有别人的引用,因为他是被动者。就是谁先要持有这个引用呢?就是主动者主动发起这个行为的,他必须要持有对方引用。对方。被动的,无所谓被动者,它可以用send来获取,好,这样呢,我们就直接将其发过去,使用反射创建yellow checking server这个action实例,同时返回一个这个他的一个代理或者是他的引用,我取个名字,取个名字呢,我简单一点就叫这个名字,注意。就叫yellow check server,注意这两个概念不一样啊,这个是它的这个a system的名字,这个是它的A的名字,这个大家要有基本的概念,好,那有了这个东西呢,下面就easy了,那我就VAR了。来整一个,我就取个这样的名字,大家看能否看懂,很简单,那么我这里就持有了,呃,不,我就得到了yellow checking server,那么我要去干件什么事情呢?好。
09:08
下面有一个最大的问题在这,如果我们这样去创建是不行的。啊,这样创建是创建这个,这个地方是有问题的,为什么呢?因为这个地方我们没有把这个IP和端口带进去,说这种创建方式呢,其实还是那种单机版的创建方式,说这段代码是我们传统写法,这是不行的,要改进,怎么改进呢?好,这段代码呢,是有一个模板。好,这个模板我就直接拿来用一下啊。这段代码,因为这段代码呢,它比较长,所以说。这个也不需要大家记忆,就这个地方我要用一下,我就不去记它了,大家看比对一下。大家看这里这个地方前期我在去创建这一个,呃,这个这个actor system的时候,我这个地方是传统的方式,但是这个方式呢,它无法指定IP和端口,而我们前面也讲过。
10:08
单机版的你是不需要指定的,因为它都在本地交互,但是你现在已经变成网络版本,网络版本呢,就首先要指定主机,就好像刚才我说的这个地方。这张我说了,他要,他要他本身是有IP地址的,比如说我们认为它是127。点0.0.1端口是999好,所以说我在这个地方呢,是需要有一个这个配置的,那么在这里只需要做一个动作,什么动作呢?只需要做一个动作,就是我们把主机它的host和端口用一个config去实现,就是返回来就是在这里。把我们的这个主机名和端口放到一个配置群,放到配置里面去,下一步我就要这样去创建了,同学们我把这个拿下来,那么拿下来怎么把这个config用到这里面去呢?同学们看啊,我们这个I system,我们讲过它有很多的这种这个这个apply方法,其中有一个方法大家请know。
11:10
注到这里面去,好,同学们可以看到它除了有这种直接给一个名字之外呢,它还有一个配置方式,大家可以看到啊。呃,有一个配置方式。啊,在这有个配置方式配置文件啊,我先这样子,我先这边写上。就就哪一哪个地方哦,就这对找到了啊,你看这里面有个名字,再把配置写进去,那么这个配置里面就包含了你这个艾克,如果是就是是它是一个网络形式监控的呢,就把这个配置扔进去就完事,那也就说现在我们创建的方式呢,要做一点点改进,就是把这个configgu扔到这边去。啊,这个动作不能少,少了的话呢,会出问题,好,我引入这个config,这个con呢,坦白来讲,它就是一个,呃,就是叫做这个类型,类型安全的这么一个东西,叫type shift,一个confi,就是保证我们的形式。
12:08
按照他的这一个网络的形式给的好,这一点有点改变,请大家注意一下。好,如果你没有这段代码呢,就代表本地,如果你有这段代码呢,就代表网络的一种监听,好有了这个东西过后呢,下面就没问题了,下面呢我们就可以启动了,刚才我们讲过了,就是因为做完了以后,我们要启动我们这个这个主这个客户端,代表小黄鸡这个客客服开始工作了,好的,那现在呢,我写一句话啊,叫yellow。Yellow river先给自己发一个消息,让他启动起来,比如说star到这边,我介绍star以后呢,我做一个做一个控制,比如说我介绍这个人发了一个师大,我就写一句话,说一句话,什么话呢,我说啊,就是师大小黄鸡克克服开始工作。小黄鸡客客服开始工作了。
13:05
好,这句话呢就OK,那现在我们可以做一个小小测试了,因为这段代码其实已经完成了一个监听的任务,只是现在呢,谁也连不到它。好,那现在同学们我来运行一把,看看这句话有没有被输出,各位请看代码运行好走一个。那么走完过后呢,我们看看这句话有没有被输出,好吧,我们看看这句话有没有被输出,第一次有一点慢好。好,同学们可以看到,现在呢,他说出了一句话,他说小黄鸡开始工作了,小黄鸡,那么这个时候我们来监看一下,监听一下我们这个端口,到底这个999有没有被监听,同学们注意听。好,Night是淡的。好,我们来一个AB啊,一个more,好,同学们请观察,现在呢,我们找找999端口有没有监听,现在没有往下走,我们有没看到,在这里我们看到这个端口已然启动。
14:03
已然启动,好,当然如果你没有这句话,肯定999你是看不到的,好这就说明这个服务器这端的这个工作呢,已经OK了,已经OK,那下面呢,我们继续来讲,好,你这里这里开始工作以后呢,我们显然就应该应该说按照这个流程来讲呢,就应该是让客户端先想办法给他连上,对吧,当然你也可以一一次写完,周老师我不喜完,切来切去,我把这个仪器写完,但一般来讲做一个。就是说作为一个正常的开发人员来讲,他他如果不是把这个代码都走过,他肯定是一步一步写的。啊,除非说老师这个如果我来写,我肯定知道下步应该干什么,我就已经写完了,但是这个呢,它是一种,它是一种就是老师已经全部写过一遍的基础上写的,但是作为一个正常开发流程,肯定是这边写完了,我这边去写,然后一步一步往里面追好,那么第一个这个监听这个任务我们就完成,我们先截段视频啊,好完成。
我来说两句