00:00
嗯,这节呢,是咱们这个下家黑客的编程的第二节啊,咱们就是来讲一下这个Windows下的网络编程的一个基础,那么我们这个网络编程呢,我们需要两个项目啊,一个是作为服务端,一个作为客户端啊,因为我们这个是以安全方向为目的的这个网络编程啊,所以说咱们也不讲那么多没有用的,咱们直接来写一个类似于这个远控的上线的功能功能啊,来演示一下我们如何去这个呃,实现一个这个网络连接的这么一个TCP啊,好,然后呢,我们首先呢,需要一个这个server。啊,这是服务端啊,我们除了有一个服务端之外呢,我们还需要有一个这个客户端。
01:00
好,然后呢,为他们创建文件啊。H添加好,然后这边呢,还有一个客户端的。好,我们首先来写这个服务端啊,我们在这边呢,我们需要首先呢,给它包含一些这个必要的头文件啊,首先是一个这个无SO2好,然后显示的指定一下它的这个呃,Lab库啊,啊不是啊,对,我们现在给他指定一下lab库啊,就是PR AC ma comment赖吧。
02:09
WS下火线30啊不对,WS2啊下火线32.lab这是这个网络库的一个lab库啊,下显示指定,然后指定完事之后呢,我们再给它输这个用一个输入数据流啊接着呢,我们现在呢需要两件事啊,第一件事儿呢,就是我们首先呢需要给它初始化一下,So,然后呢就要清理一下,中间呢就是通信,那我们先给大家写这两个函数啊,一个是这个初始化啊,初始化套节字,还有一个呢,就是清理到结字退出。好,创建出来。
03:01
好,然后现在呢,我们去实现这两个函数啊,那实现这两个函数呢,我们首先呢,需要定义两个变量啊,一个是我们的这个服务端的一个。还有一个客户端,然后两个这个地址的一个结构。So in啊,不对,So address in。好,然后开始实现它的这个初始化功能啊,它初始化功能呢,首先呢,我们要给它一个版本啊,一个版本一个版本一个word啊这个东西呢,我们嗯W我这个东西呢,使用一个这个ma word啊来使用两个数给它组合成一个这个word啊,两个二啊给它组合一下,组合完之后呢,它这两个二呢,分别代表的是一个主版本和一个这个子版本,或者说叫什么呢。
04:31
应该就这么说吧,啊,然后呢,我们接下来呢,就给它来干嘛呢,给他来这个进行初始化,初始化呢是使用什么呢?是使用一个叫做w sa startup的一个函数啊来给它进行初始化,它初始化呢,主要是把这个版本填进去,然后呢,对于一个结构啊,就是它这个叫做啊w sa data的这么一个结构啊进行初始化,我们直接把它的名字呢,给它复制下来,拿回到我们的这边来。好,然后呢,把他的地址传进去。
05:08
好,那就使用它对它进行了这个初始化啊,然后用这个函数进行的初始化,它呢主要负责把它的版本呢填充到里边去,好,那接下来呢,我们就来这个判断一下它的版本啊,判断一下它的版本啊,然后这个版本呢,我们主要判断什么呢?判断一下它的这边啊,它的结构,它的结构呢是呃是两部分啊,是一个这个和这个。特啊,这个结构里边有一个W啊版本。好判断,判断是不是等于是不是这个不等于二啊,不等于二就是清理。啊,或者说它的这个里是不是等于二啊,其实就是我们这两个二是不是都被初始化进来了。
06:03
如果是的情况下啊,我们就直接调用一下这个wa clean up。然后return一个false,好,如果版本没有问题的情况下呢,那么接下来我们就创建一个套接字啊,然后给我们的这个服务端啊做这个套节字,它呢使用一个sock函数啊进行初始化啊,那么它CK的第一个参数呢,是一个A啊it这个代表着呢,是使用的IPV4的协议啊,然后呢,下一个啊是so。啊,TCP的IPV4的啊,这这么一个东西,好,然后第三个参数呢,是这个我们直接填个零就可以了,好,这样呢,我们就初始化了它一个套节字,接下来呢,我们需要对它的这个结构相关结构进行填充,就是这个sock啊,Address这个,那么首先呢,我们这个结构里边啊,我们首先要给它来s na DR啊,这个是地址,这个地址呢,我们里边呢,还有一个什么呢?还有一个s sun这么一个结构,这里边再有一个地址是我们真正要给它数始化的地址,等于啊,In in net啊,然后ADDR啊这儿呢,给它填上地址啊,如果你是在本地回环的时候啊,你可以给他这个填任意地址,如果你是要跨局域网啊,就是说两个局域网之间互相通信要打通啊,那这种情况下呢,你要填他的外网地址,那我们本机通信啊,测试的时候没有外网地址,你就用这个幺二七点零点零点就可以了。
07:56
好,这是它的一个地址,然后呢,我们再来给他初始化一下它的这个协议,促ADRSRV,第二。
08:08
Family啊,他的family呢,就是这个IPV4,然后是我们的这个端口。呃,这个端口等于。H tos啊,比如说我随便写一个,尽量不要使用1万以下的端口啊,容易冲突啊,1万以上的比较安全。好,这就给它填充完结构了,填充完结构之后呢,接下来呢,我们要对它的这个so啊,设置一个套间选项,主要设置一下它的等级啊,Set啊,Set so k OT so RV。O sol so啊,这个这个这个红好,然后是so re。
09:07
SEDR好之后呢,是我们要填一下这个OBTOBT的一个地址啊,这是我们刚才自己写的应该,嗯,我们这个op pd呢,没没定义啊,我们定义一下啊,我们F10F12进去看一下它的一个定义啊,这个op pd PT用一个叉啊,我们这个op pd我们需要用一个叉。嗯,等于我们给它初始化成负一,好,然后把它地址传进去,好,这传进之后最后一个参数是这个差R这个OT有多大,好传完传完之后呢,我们现在呢就呃,我们现在传完之后呢,就给它设置完了,设置完之后呢,现在呢,我们需要把它的这个结构信息绑定到我们的这个上啊,也就是说我们自己的这个和我们自己的这个信息啊,这个IP啊什么啊什么这些东西啊,端口啊,这些东西我们要进行一个绑定,那绑定呢,我们使用一个函数就啊,然后使用这个它的这个。
10:08
Sock。好,然后第二个呢,是我们的这个结构啊,我们的这个刚才初始化的这个结构啊,这个结构填在这儿,但是类型不对啊,我们给它取地址,取地址之后类型依然不对啊,我们直接F12进去啊,然后它这个第二个是这个sok DR,所以说呢,我们需要给它进行类型的一个强转so啊。嗯,我想想啊,对,没问题,这样就可以了啊,然后OK,那这个东西呢,它这个呢,实际上跟这个结构呢是类似的啊,他们俩基本上是一模一样的,所以直接强转就行啊,然后回来之后呢,我们的第三个参数,第三个参数就是我们第二个的结构有多大啊,我们直接对它呢进行一个size off啊,就判断一下它结构有多大就可以了啊绑定完事之后呢,接下来呢,我们对这个端口呢,进行一个监听啊,然后LISTN啊好,然后我们直接啊F12看一下它的参数都有什么东西啊,你看一共两个参数啊呃,一个是这个sock啊,一个是他的这个backlog啊,然后呢,我们直接啊第一个给他传一个什么呢?传一个这个sok的一个句柄SOC啊,然后RV,第二个呢是传1000好,然后呢,我们这个呢,就说化完了,我们直接return一个true就OK了啊,那这个呢是初始化,那清理呢就比较简单,清理呢,我们直接首先第一步啊,Slow这个close sock啊,然后把我们的这个呃服务的。
11:35
关掉,然后呢,第二个就是这个closeck啊,直接把这个客户端也也关掉啊就可以了啊,这个是它的关闭过程啊,最后呢,调用一下。完整的退出好这个呢,就是服务端的初始化和结束啊,然后呢,我们这边呢,就操作完了啊,操作完之后呢,理论上而言呢,我们现在呢,还应该给他做点别的,但是呢,我们现在呃,我在上边给他写一个main函数吧,在这儿啊写一个这个main函数一个。
12:18
个零,然后让他暂停一下啊system好,然后上边呢,我们需要干两件事啊,第一件事呢,就是我们需要给他这个初始化一下in it啊这个呢起个监个首先需要一个的一回调数啊,这个调,然后这啊这样的一个东西,然后一个一个数啊,这个数因为我们不用啊,所以说你甚至连量都不用西啊。
13:13
好,嗯,我想想啊,这需要给他一个return啊,Return一个零,然后呢,现在呢,我们在里边呢,主要呢,是做一下这个监听的这么一个工作,那我们首先呢,它应该是一个死循环,因为我们要一直在里边监听,在前边呢,我们首先呢,获取一下这个K的一个长度啊,LGTH等于s of啊so。AR好,然后呢,我们在里边呢,再进行一个这个呃接收啊,首先呢,我们通过这个ACC啊,Ept这个函数啊,来干嘛呢,来在这个套节字啊,这个挂起队列上啊,把第一个请求链接给取回来,那这个参数呢,就是首先呢是我们服务端的一个聚柄,第二个呢,就是我们的一个结构啊,一个客户端的结构,用来给我们填充的啊一个这个ADR。
14:08
好,第三个呢,就是我们的一个这个长度啊,就是我们刚才初始化的那个长度,好,那第二个呢,因为它需要列行的一个强制转换啊,这跟刚才那一个样啊,就是SOKADR,然后是一个型啊,这样呢,让它强制符合一下需求,接着呢,这个函数呢,它会返回一个这个客户端的一个句柄啊,那所以说呢,我们在这儿啊,要给他进行一个接收,好这样呢就完成了一个接收啊,接收之后呢,我们定义一个什么呢?定一个缓冲区啊,TMMP啊,然后比如说我给了一个0S1000的一个大小啊,这个东西呢,主要是一会儿用来接收一下它的这个客户端床来的数据,接着我们使用re CV啊对这个我们的这个文件描述符拿到之后啊,也就是我们这个骚啊来拿到之后啊,我们通过它从客户端上啊,来进行这个数据的一个接收,那么这个函数它的这个第一个参数呢,就是客户端的一个句柄啊。
15:05
好,然后第二个参数呢,就是我们要存到哪啊,我们不是有个嘛,就放在这,然后第三个是长度应该是1000,第四个flag,我们直接传个零,OK,好,然后呢,我们接收完事之后呢,那么下接下来呢,我们就要拿到这个。呃,拿到我们的这个相关的一个数据了,那这个数据呢,我们现在呢,还没有给他进行一个定义,所以呢,现在呢,我们要简单的给它定义一下一个结构啊,用来上线的,那么首先呢,我们上线的时候呢,我们关心的数据呢,其实并不是特别多,所以说呢,我们定义的这个上线结构呢,也可以相对简单一点,Tap饭,然后S啊,然后是ne。Working INF for,好,然后给它起两个别名啊,一个普通的,一个带指针的,好,接着呢,它的结构里头呢,我们大致需要这几个几个东西啊,功能号就现在不用了,我们现在就是一个功能啊,当然你可以先给它预备上啊,比如说我以后功能多了啊,我可能需要功能号进行一个区分啊,那是需要一个公众号啊,然后一个ord啊,DW啊,Fi code啊,然后第二个呢,就是我们需要这个目标计算机的计算机名称啊,啊,Word,然后是C啊,Computer name。
16:32
哦,这个不行啊,这个不用能用沃,这个得用叉。差给他一个30吧,我觉得够使了,好然后是系统版本IC system也是来30啊,然后呢,是我们的这个内网IP,内网IP呢,由我们在客户端啊进行一个获取啊。
17:10
好,然后呢,外网IP,这个外网IP呢,在我们本地接收的时候,直接拿一下它从哪传过来就行了。然后没点关注的点点关注啊,咱们这个每周六周日晚上都有这个直播,有需要这个领取网剧课程的,可以直接公屏来联系咱们老板啊。好,然后呢,我给他说明一个对象。
18:02
然后拿到它,拿到它之后,我这边不是接收了一些数据过来嘛,那接收完数据之后呢,那现在呢,我就可以直接。呃,我想想啊。嗯,我现在首先呢,要来接收一下这个。我我首先我要接收一下客户端传过来的一个消息啊,那我直接用它等于啊这个buffer,然后呢,对这个buffer进行一个类型的一个强转。Network。首先强转成这个类型,然后再解引用啊,然后给它付过来啊,这就OK了,OK之后呢,我们现在呢,然后来要来处理一个东西,就是处理一下我们的这个外网IP,因为我们传过来的时候呢,我们本身呢是不带外网IP的,我们要从这个客户端拿到啊,因为你连过来的时候,他你肯定你服务端肯定知道客户端是从哪个IP过来的呀,所以说呢,我们就可以直接拿到这个东西了啊,那么我进行一下这个拷贝,直接一个这个memory啊,给他进行一下拷贝啊,拷贝到哪呢?拷,因为它是一个字符串啊,所以你只能用拷贝,也不能直接赋值啊一个network,呃,这个IP上边啊,然后呢,我们这个东西哪来的呢?是通过我们的这个客户端的这个连接过来的这个IP来获取的啊,我们来给它进行一下这个转换,转换成一个字符串n to OA啊,然后是a drr啊,Clint啊,这里边呢,有一个叫做sin DR的这么一个东西啊,里边呢存的就是外网连过来这个IP,然后呢,我们直接一个str啊,对它呢进行一个拷贝。
19:49
好,那这样呢,我们就拿到了外网IP,拿到外网IP之后呢,我们该拿的东西都拿全了,接下来呢,我们就对它呢进行一个输出啊,一个这个cout,然后呢,呃,挨个打印啊,主要首先呢,我们比如说我打印一下我的SZ啊,然后computer name,然后std andl,好接下来呢,把它复制四个啊,我们主要要打印东西这么四点啊,对没点关注,点点关注啊,有需要这个咨询课程的可以联系咱们的老满啊,然后公屏上有他的联系方式,然后呢,我们现在呢,有一个年终的一个活动啊,可以联系他,呃,了解一下,然后呢,第一个是comm name,然后第二个呢,我们给他打印一下这个内网IP,第三个呢,我们打印一下外网IP啊,第四个呢,我们打印一下系统版本。
20:36
啊,大致上这么多的东西啊,我们就给它OK了,OK完事之后呢,到这儿呢,我们就可以给他这个打印完之后呢,我们就可以让他接着循环了嘛,我们就不管它了,好,那么这个呢,就是我们的一个这个处理线程啊,那我们整个这个服务端啊就写完了,写完之后呢,我们给它设置一下它的属性,嗯,在这儿呢,首先呢,我们有一个代码生成里的一个mdd改成MTD啊缓解库,关掉应用,然后呢,运行它应该还要汇报一个错。
21:07
啊,果然爆了啊,然后呢,我们把这个东西给它加到我们的这个预处理器里,不是那个。对啊,加到预处理器里啊,然后给它放在这儿。确定应用确定,然后啊,我们再次重新生成。好,这次就没有问题了,那我们服务端就写完了,服务端写完之后呢,我们来写客户端,那客户端这边呢,我们也是一样的啊,首先呢,也要包一些这个头文件啊,你这些头文件呢,呃,和我们那边呢,也比较相似啊,首先呢,你肯定要包一个。When so2,然后呢,我们再包他的这个啊库。
22:01
然后包含一下一个获取系统版本的库啊,VIAPP啊,这个是用来获取系统版本的,然后接下来呢,我们再来,呃,包含一个这个IO用的啊,剩下的呢,这节课应该是用不到了,之后我们如果再写这类似的东西的时候,我们再写好,那接下来呢,我们现在呢,把这个我们这边这个结构给它拷过来啊,这个结构呢,我在我们的服务端和客户端呢,都是要使用到的,两边结构要一致。好,然后放在这儿,放在这儿之后呢,接下来呢,我们还需要一个so啊,但是这边呢,我们只需要一个。嗯,烧啊。好,然后说要一个so sot so。嗯,可a DR re,嗯,So sota。
23:11
SOCK。ADR。In,好,然后呢,我们给大家写一下啊,ADDRSRV,好,那现在呢,首先呢,我们还是要给他进行一下这个两件事啊,一下一个初始化,一个这个清理,那这两个函数呢,是必须要有的,好,首先初始化,然后清理。那诶。我们直接从服务端这边给他复制啊,然后再稍微改一改啊,首先初始化。
24:03
嗯,初始化首先这个从版本这啊是一致的,然后呢,判断版本啊,判断完版本之后,我们给他来搞一下这个SOSO呢,我们用这个客户端这个SOC啊。好,然后呢,我们底下这些东西呢,都是有改变的啊,那直接底下这些东西都删了啊,从这开始重新写,我看一下上边有没有区别啊上边。啊,上面没有什么区别啊,从这开始,那首先呢,我们ADDR啊,然后SRV点。ADR点,然后ad等于。那是AB2,然后给它转换一下幺二七点零点零点,诶,忘写字符串了啊,127.0.0.1,好,接着呢,我们给他说话,这个协议啊,然后family等于a in ne。
25:12
IPV4啊,然后继续a drs点端口h tos和我们的服务端一致,12138,好,然后呢,这边呢,我们端口搞完之后呢,我们接下来呢,就直接连接啊,连接到我们的服务端上啊,这开始就不一样了啊,那边是绑定不监听,那我们这边呢是直接一个content啊连上去,那我们使用这个我们这个客户端的这个句柄,然后第二个呢,就是我们刚才的这个结构。这是服务端的相关信息的一个结构啊,这个结构,然后呢,我们使用一个so cck,然后ad drr进行强转,强转完事之后下一个参数啊,对它呢,进行一下set off的一个判定好,然后呢,最后呢return一个处,这样呢初始化就完了,清理呢也比较简单,我们直接一个close socky,然后把它的这个客户端的一个socky关掉,最后呢,使用一个WS,这个start,这个clean up啊clean up啊进行清理,清理完事之后呢,我们这样的初始化和退出就完事了,那接下来呢,我们还需要一个函数啊,是用来把这个消息发送给我们的服务端的啊,那就是使用一个这个send的info啊,To server。
26:42
好创建,然后开始写,那首先呢,我们还是要给它进行一下这个设置,那这个设置呢,我们直接来这边复复制一下啊,就复制一下这一行就行了。好,然后这儿呢,使用是客户端的好设置,完事之后呢,我们这儿呢,就要发送东西了啊,直接就是send的啊send,然后通过我们客户端的一个so,然后发送,发送的这个内容呢,是我们刚才的这个结构network啊,然后buff个成下它的大小啊off,最后呢就个零啊,我们不需要这个标记啊,我们直接发出去啊,最后呢,一个数好OK啊,这就是发送消息啊,发送消息我们实现出来之后呢,那接下来呢,我们就要给它来实现一下什么呢?初始化我们的这个结构了,因为我们这些上线相关的结构呢,都要在客户端上进行一个获取啊,所以说呢,我们在这儿呢,要给他写一下啊,In in it。
27:56
Network network进行初始化。
28:07
啊,初始化完事之后呢,我们直接给它创建。啊,到这我们进行一个初始化的操作,那我们首先呢,来给它进行一下这个呃,类型的一个初始化啊,我们直接memory set,然后直接把它的整个这个network。有八份啊,这整个的一个东西啊,我们给它进行一下清理。Set off啊。这是不是这样那行啊,这样不行啊,那我就一个一个给他清吧。Computer computer是30。
29:02
然后给他复制。Name system,然后也是30,然后内网IP,内网IP是20,哎,算了,这是20吧,我记得应该是20,好,然后呢,我们这个东西就给清理完了,清理完成之后呢,首先呢,公众号。就公众号呢,因为我们现在呢,还没有没有那么多功能啊,你就可以随便瞎填一个啊,等之后有这么多功能了,你就需要给它定义一下红啊,然后接下来呢,我们现在呢就可以来这个获取一下系统版本了,但是我们现在呢,因为呃没有写这个函数啊,所以说呢,我们先给它控着啊,这个位置要这个缺少,缺少一个获取系统版本的函数啊,然后一会来补充,那现在呢,我们首先呢获取一下这个主机名啊,我们用一个int ret啊来获取get host name啊,然后来获取一下主机名啊,这个东西呢,我们直接用一个差类型的buffer啊进行容纳就可以了,Size啊这个不是啊host,然后一个一百八足够状了,好,接下来呢,我们把它呢给它传入。
30:24
哎,我需要传入它吗。我想想啊,这个host name我一会儿再用啊,我现在先暂时先。哎,我用它一下吧,我直接给它传进去吧,传进去啊,然后第二个呢,我们就传个128啊,然后呢,我根据它的返回结果啊,If if n pen啊,然后判断它这个东西呢,是不是等于零,如果等于零呢,就成功了啊成功之后呢,我们对它呢,进行一个拼接WS,然后拼接到我们的这个net。Networking buffer啊里边有一个这个。
31:04
然后百分号S。I host name啊,直接给它拼进去啊,拼进之后呢,接下来呢,我们就要获取一下我们的这个,嗯,叫什么呢?本地的一个这个啊,然后呢,从里边呢,是通过我们主行,那我就是。I host name,它会返回一个这个host这么一个结构。好,然后拿到这个结构之后呢,我们现在呢,就开始把这个本地IP啊,给它拼进去啊,我们循环循环呢,我们的这个I呢等于零,然后呢,我们判断我们的这个host he host是不是不等于啊,首先我们要它不等于闹。
32:20
后不等于no。并且。Key host里边的a DR list啊这个列表。这个列表的第I项啊,不为空,那就说明还有东西啊,然后呢,A加加啊,这样就可以了,接着呢,我们要把这个一差新类型的z host IP等于inntoa。啊,来转换它里边这个列表。
33:02
这个列表呢,我们首先啊给它复制出来,然后呢,它类型会不符,不符的情况下呢,你就给它转换一下,转换成一个叫做这个in啊in a DR的这么一个结构,In d DR星这么结构,然后呢,这有一个问题啊,就是不存在in a DR转换到in a DR这个星这么一个适当构造,那这时候你给它节引用啊,把它这个地址上的内容给它取出来,取出来之后就拿到了,拿到之后呢,我们对这儿呢,进行一个这个拼接啊,就是ws pful啊进行一个拼接,然后呢,拼接到我们的这个network working buffer里边的一个这个内网IP上边啊直接给他这个拼进去啊,然后一个百分号S,好,然后是s z host IP啊直接啊拼进去了,拼去之后啊,在这儿就是return一个处,我们只取第一个就OK了。如果说呢,走到之后还没有拼全的情况下呢,我们就一个false啊就OK了,那这事呢,还缺少一个获获取系统版本的这么一个东西啊,那我们直接在上边给它实现一下一个布尔的啊,Get system OS。
34:12
Vein啊,然后传入差星类型Z8份。好,没点关注的点点关注啊,咱们每周六周日晚上都有直播啊,有需要这个了解年终活动的同学啊,可以直接这个联系咱们公屏上的老板啊。好,我们给它创建出定义。创建好定义之后呢,我们现在呢,直接啊过空过去,然后给他进行一个实现啊,那我们现在呢,就是因为它其实可以判断很多东西啊,但是我们这呢,就不判断那么多了,而且它这个API呢,实际上判断的是有问题的啊,有时候WIN10会识别成WIN8 win8点一之类的东西啊,比如说我现在直接if一下if什么呢?If啊,Window是10OVER。
35:08
这就是温,哎呀妈呀,没选上。这个就是什么意思,这如果返回处就代表是WIN10或者更高的版本,然后呢,类似的功能呢,还有啊,就是类似于这个我们的这个WIN8或者更高的版本,然后WIN7或者更高的版本。叉P就不选了,像叉P比较少啊。好,然后呢,在这啊,直接对它内存拷贝copy啊,直接传IC8份,然后WINDOWS10。Str的计算啊,考过去多长。
36:03
好,剩下两个呢,就一个是WIN8一个是WIN7。好,现在呢,我们就直接啊,给他这个搞定之后一个处。好,现在呢,我们如果说啊,上面这些都不是啊,那么我们就直接直接一个false啊。好,这个函数呢,我们在上边给它调用一下。在这个位置上啊,给它进行一个调用,然后呢,这一块呢,我们需要给它呃传入啊,那传入呢,我们就传我们的这个直接系统版本这个东西啊,这个buffer传进去OK了,OK,完事之后呢,我们现在呢,来需要一个这个main函数啊,我们直接在最上边来给它写一个这个main函数啊,对其进行一个调用,In特may。
37:16
对零啊,首先我们初始化一个骚,然后呢,我们初始化我们的这个结构in it,然后呢,在我们发送啊,发送我们的info。Server,然后清理。克林,好,然后让他暂停一下。
38:00
运行。有问题啊,现在把他们解决掉。把这个红啊,这三个是不是一样的红,是一样的红啊,我们把它填到预处理器里。诶,解决放哪去了。应用啊,重新生成。无法打开文件MSVPTB。这是什么玩意儿?
39:06
嗯,我想一下啊,那他是头文件里少什么东西啊。When,上号。来吧,啊,这搜一下吧,这也不知道什么东西。看一下是不是版本问题啊,我们把它版本切换一下。可以了啊,是版本问题啊,2017应该是缺个东西,好,那么现在呢,我运行一下我的这个服务端。
40:03
然后服务端开始等待,等待之后呢,我现在运行我的客户端。然后客户端发送消息,诶,我服务端没接收到。哎,我服务端为什么没接收到呢?我看一下啊客户端啊,客户端客户端服务端。哦,咱们函数里没启动这个接收它的这个线程啊,所以他没有接收到,所以说我在这儿呢,要给他加一下这个线程启动的一个代码啊,这个是小问题啊,我们直接create,然后now now,然后把这个回调填进去。类型不符啊,进去之后把它拿出来,然后给它进行一个类型的一个强制转换啊,强制转换之后呢,下一个参数也不要这个也不要,这个也不要no no nono啊然后就完事了,完事之后呢,返回一个现成的一个 handleh10three等于啊接我们等啊等我们,然后传个负一永久等待,好那这就OK了,OK之后我们运行我们的服务端。
41:29
然后呢,接下来呢,我们运行我们的客户端。好,我们可以看到我们已经通过客户端把我们客户端的消息啊发送到服务端上了啊,但是它的系统版本识别有问题,但这是API的问题啊,好,那我们上边这个呢,是我们的内网IP啊,直接通过这个我们的内网获到的啊,就是幺六点的这个,然后这个呢,是我们的这个外网IP啊,这个现在显示的是127.0.0,是因为我们两台主机都在内网啊,我们是通过内网的地址进行通信的,如果你是跨局域网的时候,它显示的就会是真实的这个外网IP啊。
42:05
好,那这个呢,就是我们的一个最基本的啊,通过通过这个什么,通过我们的这个远控上线功能啊,然后来学习了一下我们Windows下的这个网络编程是怎么样的啊,这是我们的一个网络编程的基础课啊,然后就到这儿了啊,有没有什么问题,没有问题呢,这部分就结束了。
我来说两句