00:00
我们来完成这一个关于port buffer的入门案例,具体要求刚才老师已经说过了。客户端可以发送一个student po对象到服务器,服务器这边呢,它会通过port buffer进行一个编,就说他这个发送之前呢,要通过port buffer编码,服务器端可以接收到10STUDENT的抛对象,并显示相应信息,这里呢会用到我们的port buffer的一个解码,那现在呢,我们就来看这个步骤,同学们,刚才我们已经把portuffer简单的示意图说了,我们首先第一步先写这一个文件,好的,那打开。我们就开始编写,我们下面呢先建一个包。这个包走一个。口袋口袋。这是我们第一个口袋,那现在呢,我们先写哪一个文件呢?大家想在整个这个过程中,是不是我们又需要使用到客户端还有服务器端呢?
01:04
那这个代码呢,我就没有必要再反复重写了,因为这样写我们成本太高了,怎么办呢?同学们,我们这样子用用我们前面写过的一个案例来进行这个测试就可以了,同学们,现在前面我们是不是写过这样一个东西啊?这个test是干什么的?哦,这个可以不要,前面我们是不是写了一个最简单的ninety的案例,就是用来做服务器端和客户端的通讯,我们来看一下,那所以说我就直接用它了。我们在前面写的这一个基本的案例,他完成的功能是什么?还有印象吗?我们看一下。当时我们完成的功能是客户端这边可以发送一个hello server,喵喵喵喵喵,然后我们服务器端呢,它可以干什么呀,服务器端它有个handle,它可以干什么呢?它可以。回送。啊,这边。
02:00
他这边读读完了以后呢,他可以回送一句,Hello,客户端喵喵喵是不是好这样子呢,我们就用这个案例来玩就行了,先看一下,那我肯定要对这个代码进行一个改进,肯定要做改进,对不对,因为我现在要做的功能是客户端发一个使student抛,而服务器端可以收到它。那首先按按照我们刚才的流程,我们先写第一个文件来走一个。好不着急,我这边呢,有一个。有一个编写的流程的文档,我们先来看一下,简单的看一下。打开它吧。用ni中使用port buffer简单的一个步骤,第一步,在我们的项目中引入port buffer的坐标,下载相关的。夹夹包好这样子,我们就这样写,把这块拿过来,这个你就不用手写了。拿过来用就行了。打开我们的。Idea找到我们。
03:02
Pox文件在这里复制一下就可以了。好,复制一下,复制过后呢,这边他会相应的引入相关的内容,呃,在这里引入相关的JA包,好这个不要写错了,我们用的是3.3这个版本,也就是说现在我们用的port buffer它的它这个版本是3.6的。因为你的版本是33.6,到时候你再写,写什么呢?写我们的这个文件的时候,要按照他的这个相应的版本来写,因为不同的版本它的规范不一样,好打开这里过后,我们就可以编写第一个编写我们的文件了,来走。文件,我们就取个名叫student.pro啊pro。大家看这个图标呢,就发生了变化,为什么这发生变化呢?是因为我这个idea已经下载了,下载了pro的一个插件,如果你第一次写的时候,它会提示你要不要下载。
04:03
该插件,你把这个插件下载下来就可以了,好,我开始编写第一个。Syn。等于。对,Pro pro3。后面有一个分号,这个表示的版本就协议的版本,好版本吧,版本就是我们用的是三这个版本,下面呢,我们继续来写。Option选项option,我们写什么呢?Java_al_class name。等于。ST student,我说一下这是什么,这个呢,就是我们Java的外部类名。Java就是我们生成的,外部生成的。生成的外部。外部内力。同时同时也是我们生成的,将来生成的这个文件名名称就是叉叉点Java这个文件名称,但是我说了这个外部类呢,不是我们真正要发送的16,它在这里面呢,会自动给你生成一个内部类,待会我们再继续说。
05:17
好,同时也是。也是文件名。OK。接着继续往下写,我们讲过就是proTo Buffer呢,ProTo Buffer。是以他是以message的形式来管理数据的,管理数据的,因此呢,他是要这么去写message,走哦,慢慢一边写一边解释,Student走起来,大家可以看到这里我写了一个message student,将来我们真正发送出去的。这个时间段抛九是在这儿来指定的,OK,这是什么,这个是。这是。这个深对会啊,这样说会在这样写会在。
06:01
会在哪里呢?会在这一个外部内。这个外部类。外部类生成,生成一个内部类。对,这个内部类的名称就是16认证。这它使我们真正发送的student对象。他是说一下,他是真正。真正发送的抛走对象。好的,接着往下走。那现在呢,我们就在在这里来指定student相关的属性和相关的这个类型,先写第一个三二。走,我写个ID等于一,我说明一下,同学们看。这个地方,这个地方是是什么意思呢?它表明有一个属性,就是就是说将来student这个类里边这样写student。Student类中。
07:02
内容有什么呢?有一个属性,听我说属性名字,名字为IDID类型为。类型为INT32,诶同学有没有发现在我们Java里面其实并没有INT32,说明这个类型是什么类型呢?是我们的proTo Buffer类型。所以说这个类型为什么是英特三二呢?打开我们的语言指南,大家一目而了然。往下走,大家有没有发现这里面有一个子类型?大家看。简单看一下,这面有prototype。这边有对应的类型,大家有没有发现INT32,它其实对应C加加里面的INT32,对应我们Java的int,对应Python里面的int,对应我们go type里面的新INT32,那也就是说我们这个在写。点part文件的时候呢,我们的类型不能按照你这个语言的类型来写明白吧,因为它是一个根据你这个文件来生成对应的,呃,比如说Java的一个文件,或者C加加的文件,因此呢,他用的是。
08:11
他的这种类型,那我们下面简单看一下,比如说十菌,你看这里有个实菌。如果我们在写点proto文proto文件的时候呢,字符串类型就要写成小写的寸,而不是大写寸,这个小写的时,寸对应的C加加就是这种string类型,对应Java就是这个菌,对应我们的Python就是这种类型,对应我们的构员,就是新视菌。所以说你将来要用在在写这个嗯,Pro文件的时候呢,它的类型要到这里面去找,而不能按照你写的Java语言类型来写,明白这个意思吧,因为它是一种通用性质的。好,我们接着继续往下写,还有一个呢,就这个一,同学们,这个一并不代表并不代表值,而是代表它这个属性的一个序号,这个一表示属性序号。
09:06
不是值,注意听不是值,千万不要认为说,诶是不是给我们这一个第一个属性ID附了一个一不是的,它是属性的序号,接着继续往下写,我们再来写一个。第二个类型呢,我们写简单一点,就一个string name等于二。后面都有分号,这就是我们最简单的一个student student类的一个描述,它有两个属性,一个是ID,是int类型的。一个是name是实寸类型的,也就是说现在我们把哪个生成了呢?也就说现在我们把这个生成了,下一步就要用他提供的一个编译器叫pro c.exe生成我们这个pro buffer对应的Java文件,那当然了,如果你是要用你的客户端是Python,那你就生成Python文件,明白这个意思吧,那根据你的实际情况来做就行了,好,现在呢。
10:06
我们把这个文件先拿过来用一下。好,我在这呢,已经有些相关的资源了,我们打开看看。在下载proTo Buffer的时候呢,它的官网上有这么一个文件,叫做proto3.6.1点WIN32,我用我下的是这个包,这个包包里面呢,大家可以看到有一个bin文件,有个bin文件,我先把这个删掉哈,不要的先删掉,因为我以前用过。这边有一个编译器叫proto c点一一好,现在呢,我们把已经写好的这个文件保存一下。拿过拿到这边来。拿到这边来,对,拿到这边来过后呢,我们用这个文件来生来对它进行一个编译,再生成我们的它对应的那个,呃,Java文件,当然实际上这一步就是老师说的这一步呢,他也有相关的管理方案,就是直接不用来回拷贝,他有相关的方案,这里我就先就不说了,你要是愿愿意的话,你可以把这个文件拷贝到。
11:09
拷贝到你的某一个目录下面去,然后按照这个路径,它会自动的放到某放到你这个扣下面去也是可以的,好吧,就减少那个拷贝的过程,那这里呢,我就直接在这里用就行了,走起来怎么用呢?非常的简单,非常简单,就这么写这个语句,大家稍微记一下proto。下,那我们就写Java。Java_out。然后这个等诶不好意思,这那不行啊,重新来。CD。刚才有一个指令输错了什么的。好,重新来一次。Pro。Proto。C杠杠Java_out等于这个地方不要打空格,不要打空格啊,就是out后面直接写等号点空格,这个点和等号之间也不要打空格,然后呢,这边我们就写上,我们要对哪一个进行编译呢?就student。
12:18
点pro文件,这样一回车,如果不出什么问题的话呢,它就会生成一个叫做这样的文件,生成一个什么呢?叫做student这么一个点加文件,好我们运行一下。回车,回车过后呢,我们发现并没有出现任何的错误,生成了这么一个文件,这个文件。嗯,我们我们现在就可以用这个文件了,我把这个文件呢拷贝过来,我再说一遍啊,如果你的路径正确了,不需要来回的拷贝。翻过来。好的,那拷过来过后呢,稍等片刻。考官给我打开这个文件,看一下这个文件呢,同学们看到它是。
13:00
生成的被它是呃,Generated by the port buffer comp生成的do not edit,不要去编译,就这个文件,你不不要去乱编译啊,就是你用就行了,不要去乱编译,他说它是根据哪个source来的呢?就是根据student点。Pro来生成的,同学们看,打开这个文件过后,我们看它的结构,里面有一个特别重要的东西就是它。也就是他在这里面呢,有一个类不类。就这个类类类叫student,这才是我们真正的数据,OK,这才是我们真正要发生的,发生的student的。抛掘对象那个外部类呢,是对他的一个包裹进行一个包装,好回到这面,我们看到这边会提示,目前呢,它提示了很多很多信息,那个标红的错误,我看有哪些,看这里有很多错误,这个错误呢,并并不是我们这个文件生成错误啊,是因为当时我在引入。引入这一个坐标的时候,ProTo Buffer坐标的时候呢,它会把我们这个编译器版本进行一个切换,所以说我把它切回来就可以了,怎么切呢。
14:11
相信同学们都操作过吧?我给同学们再演示一下,找到我们的Java comp,把它改成1.8。但现在看看还有没有红线呢,还是不是还没改完,还有个地方还要改一下,在哪里呢?在这里。找到还有一个地方也要改,看他把这个source语言的level呢也改成5.0了,把它切成八,因为我们现在JDK8。好,这个时候呢,就不会再有错了。好,大家看,错误已经全部消失了,这时我们就可以来进行这个编写,也就是说目前呢,我已经得到了。这个文件,那今这个文件得到了过后,下一步是不是我们就可以来开始编写这个代码?好,那这个代码呢,怎么编写呢?我们可以根据这个步骤一步一步来。
我来说两句