00:00
各位同学大家好,欢迎继续收看上硅谷Java n IO课程,咱们继续来学习搜KI的通道,刚才呢,咱完成了两个通道的学习,包括第一个so so China,第二个so China,那下面呢,咱来看第三个通道,它的名字叫date gra China。咱们来详细做个学习,Diagram channel跟之前学的两通道有很多相似的地方,大家注意咱之前学的soet channel对应是不是一个soet,之前学的so soet channel对应是不一个so soet,而这里边gra channel跟之前类似,它对应的是一个关联的diagram so,但是他们有很大的不同的地方,之前的两通道他们面向的是一个TCP这么一个连接,而我们现在的diram channel面向的是什么?是一个udp的,所以这是不一样的,也就是说我们Di gram channel它是无连接的,而这个时候呢,咱通过diram channel,我们这里边既可以来发送单独的数据包给不同的地址,同时也可以接收到来自任意地址的数据包,所以这是它跟之前不一样地方,也就是说大家总结起来,Di gram channel对应的是一个UD。
01:24
就是无协议或者说无连接的这么一个状态,然后它可以单独去发送你的这个数据包到不同地址,另外可以接收到来自任意地址的数据包,这个就是m channel一个基本的介绍,各位把它先知道,然后这个介绍之后,下面我们来看一下diagram channel这个对象或者这个通道到底该怎么去用,我们先看一遍,然后最后我们来写段代码给各位来详细演示一下,那咱看到啊,首先第一个。现在如果说我想打开一个diagram channel,那怎么做呢?跟之前类似,第一个调open方法,然后得到里面这个diagram,再调一个办方法做个绑定。
02:11
也就是我们的这个代码什么意思呢?就是打开一个10086端口接收udp的数据包,这是里边的第一个,然后咱们看第二个啊,比如现在我想要接收数据,那这里面一个方法叫方法,能接收你udp的包,那怎么做?我们看代码,首先这里边我们创一个八法,包括clear,然后这里边用serve里边这个receive方法进行这么一个接收,这是里边的这么第二个就是接收数据,主要调的是receive方法。然后第三个发送数据,那不用说了,调的是什么,就是里边这个散的方法,我们做一个发送,在里边我们可以指定你的这个就是buffer,包括绑定你的这个。IV地址,包括端口号等信息,这是第三个,然后里边还有第四个就是它的连接操作。
03:07
但是各位注意啊,因为data gram China它是面向UDB的,所以它不存在真正意义上的连接,这里的连接指的是什么呢?就是我们现在可以向特定的服务地址用read和write接收和发送数据包,这个叫连接,就是像特定地址来read和write这个操作,包括我们看这代码中啊,比如现在我用connect进行连接,然后在里边用read,咱是不来进行这么一个操作,然后还有一个write,再进行另外一个操作,就是read write是用于接收和发送你的数据包的这个过程,所以这个各位知道啊,然后这里我写到read right呢,只有在你connect耐之后才能使用,不然它会抛出这个异常。这是关于我们说的关于gram里边一个基本的这个介绍,大家知道怎么来打开这个gram China怎么接收数据,怎么发送数据,包括怎么进行它的连接等等内容,所以这是关于data gram的一个基本介绍。
04:15
那这些呢都介绍之后,下面呢,咱们通过一个具体例子给大家来演示一下diagram China到底该怎么去用,咱就来模拟一个服务端发送,就是客户端发送啊,服务端接收的这么一个例子,那下面我们来写段代码,把这个过程咱们来演示一下,大家看一下里面的效果是怎么样的。首先我在这里边呢,我来创建一个类,咱们来演示里边的效果,那这个类我起个名字就叫做it come。现在我把这个类我们做这个创建,然后创建之后呢,在里边我们来编写这个代码,首先我们先写第一个代码,就是我们进行发送的这个代码,那我们来写一下啊第一个代码。
05:11
我们做一个发送的,或者说发送包的这么一个时间,那这个过程呢,为了咱们一会儿测试方便,我就加上一个单元测试的方式,把这个我们做到,那这里边我来一个at test,然后咱们来一个public wait,加上咱的方法,我起个名字就叫做send it。B。这是我们创建的这么一个方法,然后一会儿这里边咱实现发送的这么一个过程,然后这个选完之后,比如说咱们再写第二个方法,第二方法实现就是咱们接收的这个问题,我要接收发送过来这个包,然后第二个写个出这啊就是。接收。它的这么一个实现,然后这个过程中呢,咱们也是写上这么一个单元测试方法,一会儿我们做实现,那我写一下啊,我来一个test。
06:11
然后加上public we接收,我们起个名字就叫这个receive。Re receive,这个it。这是我们写的二个方法,因现在呢,我把这结构我们就写出来了,然后写完之后在里边我们写代码,首先我们写第一个就是进行发送代码,那代码怎么做呢?首先的第一步先要打开一个it c channel这么一个内容,把这个先通道打开,打开怎么写,刚才咱们看过了,我这里边就直接写一下啊,首先我们来一个it on。开。然后给它起个名字,比如咱就叫这个send pan,因为咱是发送端嘛,再来一个。
07:04
等于就是it cru t填open方法,这是里边的table,咱现调open方法,里面有异常,给它直接S出去。啊,这是第一部分,然后写完之后呢,我们用这个就是散的这里边的方法做这么一个绑定的这么一个过程,那我们继续往下来写啊,那咱们来看一下我们的第二段代码。二轮代码呢,我们写上一个地址,因为咱们要发送嘛,最后这里边有一个地址,那地址呢,咱们来写上这么一个对象啊,就是这个I这个address里边的这个地址,然后找到啊这个socket address,然后起个名字,我们就叫这个send address。等于咱们就是U上一个有一个对象在里边写上我们的那个IP地址,包括它的端口号信息,那比如说因为咱是本地嘛,所以就来一个27.0.0.1它的括号,比如比如说我就写这个角。
08:12
你现在把这一步完成了,完成之后我们继续往下来做,而下面怎么做呢?我们就做这个发送的这个过程啊,咱做一个发送,发送咱刚才看到了我们做的方法是就是那个S方进行实现,所以这里边我来一个循环啊,来一个Y,让它一直进行发送,里边我们来一个这个to。就一直进行这么一个发送,然后在里边呢写发送代码,咱们调这个散的pan里边这个方法就叫做散的方法,发素在里边通过这个缓冲区做实现,那缓冲区我就直接写到这里面去了啊,那直接写下,呃,比如说呃,我给他写外边啊,咱Y来看的更明显,再来一个贝B。
09:02
我叫buffer,等于就是我们用一个k buffer,点上一个叫rap这个方法在里边放一个字节数组,比如说我们随便写个名字啊,就叫这个,呃,发送at。写这个啊,然后把它变成一个字节数组KK里边我们可以加上一个编码方式,比如说我们是UTF方八,这样的话解了一个列数组,然后写完之后S中的第一个参数加上这个八法。然后第二个参数,按照咱们刚才写那个地址,就是暂现在我们就完成了一个发送,然后发送之后里边比如说我做一个提示信息。答问做输出啊,其实他就是这个发高端已经就是已经完成了发送啊,已经。
10:01
完成了发送啊,包括最后因为咱是循环一直发嘛,最后加上一个这个sleep。就是right里边这个sleep,让他sleep一会儿,比如他来一个天。大家注意啊,现在这段代码咱就完成了一个发送的这么一个实现,各位把这代码好去看一看啊,也都是咱们之前最基本结构,虽然用的是RAM China,但是跟之前写法应该说差不多,所以这个我们就完成了发送段的这么一个编写。发送端呢,完成之后,下面呢,我们来分析这个接收端,咱们把接收端代码来写一下,那我们来看一下啊,首先第一步肯定还是打开咱们这个it club这个。啊,这个我们先打开。那这里边我来写一下啊,It from我们起个名字,我们因为我们是接收端嘛,所以咱起名叫这个receive。
11:07
我在里边写一下啊。Receive,等于这个it come pan,点上这个open方法,这是咱的第一步,刚才在发送短单写过,和刚才代码就尝试类似的,那咱们有异常给他直接就出去。这是第一部分,然后第二部分呢,我们写上他绑定那个就是so address这个地址也就跟这个类似。这里边我直接写一下啊。然后这个里边呢,因为咱们发送是向这个127.0点点一这个9999里边发送的,所以我这位置直接写上他这个口号是图999是咱们的第二部分,然后写完之后第三部分咱们做这么一个绑定的这个过程,因为咱们要接收到9999端口里边这个相关发送过来内容,所以咱们要做一个绑定,用这个receive开到里面的方法叫做。
12:10
看的方法上里边这个地址啊,这地址我改个名字啊,叫这个receive address。咱们做这么一个。旁听。这是我们的。就不找,然后这个选完之后呢,下面再来进行这么一个接收过程,那接收过程呢,这里边。首先我先创建一个这个buff。因为咱们要通过缓冲区做这么一个操作,那我来个k buffer叫这个receive这个。八卦。有名的啊,Receive办法。等于这个at b点上alo里边要写个大小,比如1024,这是我们点的buff,然后记完buff之后,下面咱们做这个就是接收的,我们也是通过Y,一直就是他一边给我发,我一边就接收,咱通过Y里边循环来接收,在接收中首先把八块先做个可令啊,首先可粒一下。
13:14
可之后来调方法接收,那这个怎么做呢?咱们调这个receive handle里边这个方法就叫做给save方法,也就是这个方法里边传入咱刚才写那个BU宝。最终他返回的就是我们的这么一个相关,这个是啊,咱给他。返回一下啊,我们的这个纸啊,也是一个叫socket address。啊,所以这样的话,我们现在把这个过程就完成这个接收,然后咱通过里边这个so dress里边这个。值能得到,他给我们发过来那个地址,包括里边一些等等的相关内容啊,那咱给他得到一下啊,比如这里边我就叫这个。
14:00
呃,咱就叫这个socket。给他就改个名字啊,Socket address。然后这样的话,我们应该就接收到了,接收之后呢,咱们把这个就是receive buffer给它做上这么一个叫sleep啊,就做一个模式的转换,转换之后这中把里面的内容和输出,首先这个so dress这个地址咱们先输入一下啊,就是得到一下它的壁址,先来一个瑞做输出。然后这个做到之后,下面再把它给我们发过来的内容给他做到,因为他发过来内容应该咱们现在是在咱的这个八块里边,这就是这个receive buffer给他得到,但是得的过程中呢,因为这个过程里边啊,大家注意我发过来内容是不是有中文呀,并且加了编码,所以大要做一个编码上的这么一个处理,那怎么处理呢?在我们这里边有一个对象给大家说一下啊,就这个对象不做。
15:01
插set对象你看啊,也是在I里边,然后再插set里边有一个方法,这个full name,咱们给它加上一个方法,咱们是UTF杠八再加一个方法,叫这个抵扣的,把这个receive我们做一个编码的一个处理。因现在啊,里边这个值我们就最终得到了,就是咱们先写里边这个接数端,只要用里边这个receive方法得到它发过来这个内容,所以现在啊,这个代码我们就写完了,关于里边用data gram China实验出来里面这个就是发送端,包括它的技术端。那这个写完之后,咱们来试一下这个效果啊,注意怎么试啊,首先我把发送端先给它启用起来,因为它要一直进行发送,那我们来看一下啊,因有单元测试,你看这里边已经发送完成,已发它就一直在发,然后咱再把这个接收端给它启动起来。
16:03
咱看接收段啊,然后接收段中你看啊,这里边这是我那个地址,然后下面是发出的那种,咱们发的内容是不是就叫发送at硅谷这里边就是一直接收到这边一直在发,这边一直在接收,所以现在咱就通过这个相关的代码把data gra拆这个过程给各位做了演示,也就是里边的这个特点啊,所以大家把这个过程给他要知道。啊,这是我们做的这么一个演示。好,这个演示之后呢,我们再往下来看啊,刚才给大家提到了,咱们看一下我的课件里边啊,我们说的在data gram channel里边还有一个操作叫连接操作,但是它本身并不是真正一的连接,而是像特定的服务地址,用read和write接收和发送数据包,在这过程中需要调一个可耐的方法进行实现,所以下面呢,我把这个效果给各位也是做演示,咱来演示一下getg gram怎么做,这个就是连接的这个过程,也就是read read方法,这过程我们该怎么进行使用,那下面给各位来演示一下里边的这个过程。
17:20
咱们写下代码,那我就写到配置。还个注释啊,演示里边那个。M这个连接的这个过程。不要演示里边这个瑞的方法和里边这个瑞的方法这个过程,那这里边我来说一下啊,首先里边咱们还是。变一个根源测试的方法,那我写一下哈。然后这个方法,比如我就叫test这个connect啊,因为是测试连接嘛,Connect。然后在里边我们写一下它的代码,首先里边的第一步跟之前应该一样啊,这步我就直接复制一下啊,咱们把这个拿回来就是先getram给它先打开。
18:11
也是用这个open方法,我们做一个打开。里面有异常直接给他出去。这是咱的第一部分啊,然后这个写完之后,二部分咱们做一个绑定啊,给他绑定一下啊,比如现在我绑定就绑定那个5999那个端口号,那我们用这个就是,呃,给他改个名字啊,我叫这个。Connect耐6NO,然后用里边这个方法做这个的方法里面绑定直接就new上这么一个比较。Dress里面加上这个9999,这样的话,我们出一个绑定。然后绑定之后呢,下面咱们来电力里边这个连接啊,或者创建这个连接,这个连接刚才提到了,用里面一个方法叫那个connect耐方法进行连接,那我们写一下啊,Pan点上这个connect耐在里边,咱们写上它那个地啊,咱就直接摸上这么一个就是1IT so插上咱们那个就是IP地址,我们是127.0.0.1,它的窗口号这个求九求九啊,咱们做这过程就做一个建立连接,就是做到它发送和接收这个过程。
19:28
然后这个做到之后,下面咱可以调这个write方法,包括read方法,做题过程,首先我们先调这个write方法来进行这个操作啊,选下啊,先用这个right方法进行,那我们到这个pan里边,这个right方法里边加的肯定还是这么一个,就是八分的过程啊,那这八分过程我从别的里边给它复制的,因为刚才咱都写过了,应该就是里边的,呃,这段代码。我把这个啊,咱就直接拿过来啊,因为现在要写的就这个代码。
20:05
我们给他拿回来,比如说啊,还是叫这个发送ad硅谷。所以现在啊,咱就完成了right方的过程,因为read write呢,就是一个接收调用的过程啊,就是发送了接收过程,所以咱们先调的方法,然后写完之后,下面呢,咱们再调那个read的过程,而read的过程呢,咱还是通过那个八块镜头作,因为现在我写是放到八块中,咱们读也是从里边进行读取,所以这位置我就晃见这么一个B法。快写一下啊,这个buffer,我们叫这个read buffer刚才是right,现在是read。等于这个KB,分点alo,我们叫有点四。然后写完之后,下面咱就来一个Y这个循环的这么一个,为的就是读的过程。啊,那我们来写一下啊,这个过程应该就很简单了啊,其实它的核心代码就是要用这个pan里边这个read的方法,我们进行这么一个读操作,然后读里边加上咱们这里边这个就是read的buffer,我们做到这个过程啊,其实主要是做这个,一个是往里发送,一个是接收,通过write和rate我们做个实现,那这个代码我就从课件中咱就直接分过来了,因为之前咱都写过很多类似这代码,我直接拿过来啊,应该就是里边的。
21:32
这个代码我把这个啊给各位直接复制过来。就这段啊。咱们拿到这里面来。拿回来之后我们看一下啊,首先先clear,然后调鱼的方法进行这个读取,这之后和模式最终把它里面内容给它得到,用插菜的做一个这个编码的处理,也就是说你可以这么理解啊,我们现在通过转是一个发送过程,然后通过read是一个接收读取过程,所以咱们现在通过这个代码把这两个方法做了一个演示,当然各位注意啊。
22:14
你调read也好,调RA也好,它前面必须先做一个connect耐操作,如果你不做connect耐,那它最终做不到这个效果,所以现在这个代码我们就完成了,然后完成之后咱们把效果做个演示,看一下这个效果是怎么样的,就来做一个read write这么一个连接的一个过程,那下面我们来执行一下啊,看看效果。首先大家看啊,这里边我们现在就进行这么一个发送,然后往下来接收到里面这个数据。所以现在呢,这个我们就演示完成了,也就是说啊,咱们到这里为止,咱们通过这段代码,就把我们里边这个data gram China这个so通道给各位,就最终也是完成了,要求各位重点掌握,第一个data gram China,它的相关的特点就是面向udp的,然后第二个就是里边定的代码,咱们写的两个代码,第一个就是发送接收,第二个是建立连接的这个例子。所以咱们。
23:18
关于so的三个通道,我们就最终演示完成了。
我来说两句