00:00
行,这呢是我们写的这个叫例子一,那例子一写完以后,我们呢,可以再去在这个基础上呢,再让它复杂一点,哎,整个呢,其实我们写的这几个题目呢,都是我们这个PPT里的,接着呢,我们来做第二个事儿,这是第二个这个例题。再新建一个。TCP的一个TEST2。你看例题二啊。诶,这个仍然是关于我们这个TCP的一个使用。行,我们来看这个问题说呢,客户端发送文件给服务端,这是发文件的,然后服务端呢,把这个文件保存到本地。比如说这个客户端的话呢,这个是一个,呃,相亲的一个对象说呢,我给你发一张照片,你看这个行不行是吧?呃,然后服务端呢,接收到以后呢,诶你看诶不错啊,把这个文件呢保存了一下。来做这样一个事情,看看这里边儿我们怎么去做,整个这个思路呢,跟刚才写的其实是一样的。
01:13
行,那首先呢,我们来写这个客户端啊,整个这个步骤呢,套路是一样的啊,首先我们需要去造了一个叫socket。哎,等于,呃,你有一个叫socket,那这个socket里边我们呢,需要去指明对方的啊,IP地址啊,叫get by name。啊这样啊这呢,我们就呃这个你写具体的192168啊,14.100也行,或者你写成127.0.0.1,那就连自己了。诶,然后呢,在后边指明对方的端口号啊,我这个9090吧。这样啊行,那写完以后这呢有异常暂时呢,我们都先去throw一下。啊,这个再还有一场啊,再往上抛行,这呢是我们造了一个这个socket啊,然后socket的话呢,我们要往外去传数据了。
02:10
传数据的话呢,我们就要get output stream。造一个这个输出流行,那现在呢,我们输出的这个数据是从我们客户端的这个本地发的一个文件。那咱们这儿呢,得整一个文件,整一个文件,咱们整一个。整一个女生的图片吧。图片。整哪个类型的?这个可以是吧。还不错是吧,来把这个吧,看CTRLC。然后诶这个呢,放在当前的这个Mo下啊,CTRLV一下,好,那我就放到这儿了,放到这儿现在呢,我想把这个数据呢,通过网络给它传输出去,那现在呢,是我们传输出去用的这个叫output stream了,Output stream了接着呢,你得先把这个文件是不是读进来,读进来怎么写。
03:11
是不是咱们讲过这个叫file input stream了,诶,当然了,你要让这个效率高一点,一下缓冲流包一下啊,我这呢就不包了,直接扭一下叫file,看input stream这里边呢,指明你具体的这个file。诶,就是我们这个文件啊,CC就它一下。行,那接下来呢,就是具体的一个呃,读和写的过程了,这个咱们都不陌生。哎,这是比如说1024。呃,Int一个L音啊,While l音等于嗯,F is点哎,Read到我们这个buffer当中,哎,返回长度不等于负一,哎,接着呢,通过OS点做right把它写出去,B0RIN,哎,这呢就给传输出去了。
04:06
清楚是吧,那传输出去以后,接下来呢,做一个资源的关闭,从下往上,你看都有哪些资源。FS点,诶close一下os.close socket close行这呢我们就写完了,诶整体上来讲啊,这是第一步造了一个socket。哎,第二步呢,我们去获取一个输出流。哎,然后第三步获取一个输入流,从哪个文件里边去读数据,下面呢,就具体的一个,呃,读写过程,最后资源关闭啊这呢咱们都讲过了啊,都比较熟了,所以我这呢就不去具体写这样12345了,这个完了以后我们来看这个服务器端,服务器端呢,诶我们刚才也提到了啊,先去造一个叫serviceet,哎,Serviceet呢,不用指明自己的IP了,你运行起来自己IP自然就识别了,指明一下你自己的端口号9090。
05:04
哎,这呢,我们付给这个叫server socket。哎,不妨我就SS了行,那异常暂时呢,我们都死死。这样啊,接着的话呢,就像刚才一样,我们表示呢,可以接收来自于客户端的socket,那接收到以后我就拿到这个socket了,拿到socket以后,我们主要呢,是想获取一个读入啊输入流get input STEM,然后呢,我们诶得到一个输入流,输入流我们想把这个呃获取到这个图片的这个流呢,给它保存在咱们本地的一个文件当中,只不过我现在写到同一个Mo下了啊哎,你你想象一下就是大家呢,你可以一个人呢去写服务器端,那个人呢写客户端啊,你可以发一个图片给他,那肯定你接收到以后呢,是在啊你自己的这个model像啊一个新的路径了,这呢对应的咱们就造一个file output stream就完了。
06:00
哎,File output stream,哎,这里边呢,指定具体的一个文件,哎,你一个file,这比如我们就叫做beauty。一吧,看第2JPG,诶我呢就把这个文件呢,存到我这个路径下了啊,那接下来呢,又是一个读写的过程。哎,这几天呢,写这个应该写的不少了。诶,等于is,点我去read到咱们的B当中,不等于负一。这个fos点做一个right写出去,八零号银。哎,就这样。哎,那此时的话呢,我们这个文件就可写出去了,写到哪了呢?就写到这个文件里了,行,那写完以后接着呢,资源的关闭,那从下往上。来做一个close。
07:07
诶行,这张就写完了,这张是咱们说的这样的一些步骤啊,呃,第一步就跟刚才这个写的例题一是一样的,造一个server socket。哎,第二步呢,我们去获取一个客户端的socket,诶第三步我们呢,获取客端的这个输入流,诶这个问题咱们要保存数据到本地,所以我就建一个本地的一个,呃,操作的叫file output stream。啊,这呢就是一个读写过程,然后最后呢,把这个资源关闭一下啊,一定不要忘了,那因为涉及到资源的关闭,所以呢用呢按说不合适,包括上面呢也是一样啊,但是这块呢,我就不改了啊,大家呢,这样写可能更清晰的能够看到这样的几个步骤啊,但是我得说明一下啊说呢呃,这里涉及到的异常。哎,涉及到的这个异常啊,我们说应该使用,哎,Try catch finally,哎处理啊。
08:02
那这里呢,相当于还是我偷了一些个懒啊,哎,我们写的这个一的话呢,这是咱按照这个要求来写的,这块呢我就简化了,哎,注意一下这个事儿啊行,下边呢,我们执行一下,我把它呢跑起来。薅起来以后,我现在呢,把这个客户端呢也打开,诶那这就完事了,当然这块你要说好一点,咱们可以在这呢稍微写一个说接收成功啥的是吧?啊这就没整了哈,没整以后,嗯,这块呢,我们这完事了,这呢也不会有任何的信息,因为咱们把这个数据呢,这不是保存到这儿了吗。诶,打开这个是可以看得到的。啊,你也可以去对比一下,看这俩图一样不一帧一帧的比一下是吧?嗯,行,这个呢,就是我们说的这个练习二啊,哎,大家呢,你下来可以测试,就是你写一个服务端,他写一个客户端,你俩呢是可以发送的。
09:00
啊,数据。
我来说两句