00:00
好,那关于这个tdp的,呃,这个网络编程呢,我们就说完了,下边呢,我们来讲一下这个叫udp的网络编程,这呢我们就写一个例子就可以了,刚才呢,我们提到了关于这个udp和tdp网络协议的一个区别,诶,网络协议这个区别这里呢,我们就提到了,说这个udp它是一个不可靠的连接了啊,它呢,系统不保证udp数据报一定能够安全送到目的地,也不能够确定什么时候可抵达啊,它就只管发,嗯,它的好处是什么呀?对,快高效啊,它可以发送很多的,这个叫data gram packet数据包,或者叫数据包那里边呢,封装了具体的数据,使用的呢,仍然是我们的socket,这呢叫data gram socket。来,咱们写一个例子。Udp的一个测试,哎,这个udp的一个网络编程,我们这块呢,一个叫发送端,一个叫接收端啊。
01:03
Udp的。哎,忘了编程。我们这儿呢,习惯上叫这个发送端,诶接收端。Receive,我要receiver。接收端这样,这呢叫发送端接收端。行,那咱们呢,首先也是先来写这个叫发送端啊,写发送端咱们刚才提到了,我们用的呢,仍然是socket,只不过呢,我们叫做叫data gram socket,哎,造的这个socket。这个socket我们给他呃声明成一个对象啊,我就叫做这个socket行,那data gram socket首先呢,这块提到这个,呃,这个异常的这个情况了,现在我们去一下啊,然后这块呢,你发现诶直接呢,空餐呢,就有这样一个构造器,除了这个之外呢,看一下啊,还有其他的一些构造器,那这里边要不要用参数呢。
02:21
这呢,我们说就不要用了。就不用了,为啥呢?呃,因为咱这块呢,说把这个数据,哎,还有你是从哪来的,你要去哪,这个都不会放在这个socket里了,哎主要呢,我们都去放在咱们的data gram packet这个数据里的,还叫数据包,那我们去扭一下叫data gram packet。把数据呢,都封装在它里面。行,这是一个packet,这个packet,看看它的这个构造器。啊,还挺多的。还挺多的,那我们应该用哪个呢?
03:02
哎,你看这些参数一肯定是数据了。嗯,然后呢,从哪开始多长,就是说这个数据里边你是要都发吗?如果要不是的话,你指定要发哪一段的。关押这些关押他行不不行,咱们说了,你这个要发哪是不是也得记录一下,就像咱们那会儿提到的说举例子就是说这个导弹一样哈,这个导弹的话呢,是在这个导弹里边记录了,你要。打到哪哈,所以说在我们这个packet相当于导弹,你还得记录一下对方的一个IP地址和端口号,诶,所以我们用的是这个格导器。那用这个构造器呢,首先得指明你这个数据了,嗯,数据不妨我们就提前呢,先写好一个string。哎,String呢,Itr等于说呢,哎,我是啊,这样说吧,Udp方式。方式呢,哎,发送的这个导弹是吧。
04:04
哎,这是我们这个这个这个字符串了,嗯,字符串咱们现在需要给它变成一个叫字节数组啊,这个ST2点盖一个best。这呢,我们叫这个data吧,哎,这呢就传进来,我们这个data逗号零都发出去,但然后接下来指明一下对方的这个I net address还得提前制定。Get by name这呢,我还是给自己发了,就127.0.0.1,或者说我们还有一个比较省事的啊,Get是local host,嗯,这样。好CTRLC把它呢就写到这儿,接着呢指明一个端口号,对方的啊9090这样写的,那这呢就相当于咱们这是的一个socket,这呢核心呢就是在封装一个数据包,哎封装完以后,我们通过咱们的这个socket,我去把我们的这个数据包呢发出去,哎,Packet。
05:10
这就相当于给发出去了。哎,这个异常我们也抛一下,那发出去以后,那接下来呢,我们也可以把我们这个socket呢做一个关闭。小写的。行,这呢我们就操作完成了,然后接下来呢,我们看我们这个接收端啊,接收端跟我们这个发送端呢,用的都是data gram socket,诶都是它啊,CTRLC一下CTRLV过来啊,这是一个socket,等于new一个啊data gram socket,那么这里边这个线异常呢,给大家去抛一下啊,看一下我们此时需要用哪个构造器呢。哎,这时候呢,你是不是得指定一下自己的端口号了,嗯,你要不领断号,我都不知道你到底呃,能不能发过来了啊,可能是别的进程了,这呢我们指定一下这个端口号。
06:09
哎,制定好了,制定好以后现在的话呢,我们socket。哎,也呢,用它去接收数据,接收呢,这不就叫做嗯receive嘛,哎把数据呢,也接收到咱们这个,呃,Data gram packet这个当中啊,数据呢,其实都封装在我们这个data gram packet里边。咱们就一下data gram packet。行,那此时的话呢,也得考虑说我应该用哪一个构造器。嗯,这个把数据呢,这不都就放到接收到它这里边了啊,那这里边呢,数据本质上来讲还是得在我们这个字节数组当中啊,那到底应该用哪个呢。你这块呢,因为涉及不到发送了。
07:00
其实呢,就是先指定你这个数据核心放到哪。嗯,这个呢,就相当于从头开始默认的是从默认就相当于这是零了啊嗯,其实就用这些都行是吧,关键呢,是不是就不用它了。你现在呢,指定自己没有必要再去指定端口号和这个address了,这个是对于我们的发送端来讲的,那上面呢,咱们这就简单写个例子了啊,因为有可能你这块造小了以后呢,上面的过来你这块接不完是吧,咱们这呢就简单体会一下啊,嗯,咱们发的这个数据呢,不会特别长,我这呢给他这个100啊肯定足够了,哎,放到我们这个。在B当中。嗯,Be buffer啊放到这里边,那这里边呢,你可以指明从零开始啊到buffer.lengths哎,就这里边呢,都去存,哎存不下,那这个这个呃,用不完,用不完呢,你存了多少是多少。哎,这样的话,把数据就整个存到我们这个pack里,哎,有异常跑一下,那接收完以后数据呢,实际上啊放到它里了,本质上来讲呢,是在我们这个八数当中的,那接下来呢,我们想把这个数据呢,就展示到咱们的控制台上,哎这个时候怎么展示呢?哎,我们输出一个字符串了,那这个字符串里边具体要放这个数据了,哎,我们通过这个packet,其实本质上来讲应该是八副哈。
08:21
但是这个buff副的话呢,你这写零后边这个到底有多少个,是不是也不好写啊,所以这块呢,我们可以这样处理数据的话呢,你也可以通过这个packet,它呢叫get data,相当于得到的就还是咱们这个buffer啊嗯,接着呢,我这个packet写到这个数组当中,到底多少个呢,有个get length。那用它就行啊,那这呢应该写零是吧,诶到get length。能看懂吧。这个呢,是获取我们packet里边的这个数据,是一个字节数组,然后从零开始,一直到呢,你看你写进去几个,哎,我们造成了一个string,做了一个输出,哎,最后呢,资源做一个关闭,诶close一下。
09:08
那这就完成了啊,这个呢,大家作为一个了解就行啊,知道呢,我们这个TCP和udp呢有区别,那现在的话呢,我想去执行,执行的话呢,按说是不是也得先把接入端起起来啊,也得起它,但是呢,如果说啊,我们要先起了一下这个发送端,你看我先起下这个发送端。也没有报什么错是吧,那我再去起这个接收端,当然接收肯定是接收不到了,他在这儿一直等着接收不到了,但是呢,我们也看到不会出什么异常,那同样的这个问题,你看我们要回到咱们的TCB这块,咱们上来就先去起这个客户端,这时候呢,他是不是就要去握手了。他等了一下,就是有一个时间啊,啊,这个时间之内呢,发现没有获取到关于服务器端的连接,这个握手失败了,他可以给我们报出来,说这个连接呢失败了,哎,这是TTB跟我们UTB的一个区别。
10:04
嗯,就是说白了,Udp呢只管发,反正我是发出去了,至于说你有没有接到我管也没关系,跟我没关系了,所以呢,他是会,哎,他不会报错,而是TCP会哎报错啊哎,当然了,你要想吸收成功,肯定保证我们的接收端先提起来。这块呢,他就等着接收,我们这块呢就发送。哎,结束了,那这呢是发送端看一下接收端这边就发过来了,哎,就是这样一个情况。嗯,就这样啊行,这呢是咱们这个TCP的一个例子啊,大家下来呢看一看其实就可以了。
我来说两句