00:01
大家好,我是walker,今天给大家带来这次视频分享的内容是walkerman中connection类的用法。在沃克曼中,有两个很重要的类,Worker与connection。Worker作为一个容器,它可以监听特定端口,那么当客户端连接到这个端口之后,会在这个容器内部产生一个connection对象。那么这个worker容器可能有很多个connection对象。那在work内部通过操作这个connection对象来完成向客户端发送数据,还有接收数据等等操作。在沃克man中有两个connection类,一种是TCP connection类。另外一种是a think TCP connection类,那么这两个类的区别与联系是什么呢?Tcv connection类是沃克曼中的啊,连接类的基类,诶think TCP connection类呢,是它的一个子类。
01:01
那他们两个的应用场景是什么呢?TCP connection类,就是我们刚才说到客户端连接到沃曼之后,自动产生的一个connection对象。那么它的基类就是TTP connection类。A think TCP connection用在哪里呢?比如说,当我们在workman中需要访问外部的某一个服务的时候,我们可以通过这个a thinkc TCP connection类异步的发起一个TCP连接去连接远程的服务端,然后异步的通讯就需要使用这个I think TTP connection类。好,现在我们通过一些例子来讲一下这两个类的用法。那这是一个已经装好了沃克曼环境的Linux系统,我们看到这有个沃克曼目录,是沃克曼的内核文件啊,所有点PVP是他的一个业务文件。我们打开这个文件看一下。
02:02
首先,第一步是初始化了一个work克对象和以TCP协议监听80端口。那么当连接连接上来的时候呢?这里边会打印一行connection success.那么当连接上有消息过来的时候呢,我们通过这个connection对象来send的一个数据给客户端Hollywood,那么客户端会收到这个Hollywood。那么当客户端关闭连接的时候,那么这边会打印一个connection close.好,我们来试一下。启动起来。我们使用tell net来测试。等级测试80动套。我们看到这时候泰纳的客户端已经发起了TC的连接。已经连接到了沃克曼。
03:00
Connection success打印出来了。那我们发一段数据。嗯,服务端work map, 返回这个hellowood,和我们预期结果是一样的。那我们关闭这个连接,看一下我很慢会不会打印出来c close, 那TL怎么关闭呢?我们通过按住CTRL和右方括号。然后再输入quit就关闭了。我们看到connection close.那这里面会打印connection,和我们预期结果一样的。我们按CTRLC。停止播开。那么connection除了散的方法,其他比较常用的方法还有close方法。还有一个是remote IP.可是获取客户端的IP的方法。我们在这里边做一个测试。
04:02
我们这里判断一下IP,如果IP不是我们想要的客户端IP,我们就把这个连接关闭。Cat nott IP通过慢能通过这个方法来获得客户端的IP。如果客户端IP不等于。那7.0.0.1,也就是说不是通过本机访问的,我们就把这个客户端链接关掉。通过connection close的关闭一个连接。那么C里边实际上可以啊,放参数的。比如说大的IP,那么这个参数就是在close之前要发现客户端的一段数据。
05:06
那么客户端会收到一个大的IP,然后连接会被关闭。好,我们来测试一下,好启动。我昨天来一次。我们看到我们现在是通过127.0.0.1去连的,也就是说本机去连,那么我们客户端的IP就是127.0.0.1。所以这里边它不会把连接关闭。那我们换一个IP训练,通过外网IP训练。因为我们刚才把这个连接关闭了,所以这里边会打印一个connection close.
06:00
好,我们通过外网IP去访问,也就是说通过外网网卡去访问这个服务。那预期结果是这个连接会立马关闭掉。我们看到。不端返回一个BIP,然后这个连接就被关闭掉了。这个标也会打印collection clothes.Unconsy.那这一部分的功能实际上就有点类似IP白名单或者是黑名单。那么好,TCP connection类开发者会使用sand cloud get re mod IP, 那基本上就差不多了。那下面我们来讲一下a think TCP connection类它的用法。A think TCP connection类呢?在沃克曼主要是作为客户端去连接其他服务端啊所用的类,那么它会发起一个异步的TCP连接,那么通过设置这个连接的啊,Unconnect UN messageage和UN close啊来实现业务逻辑。
07:17
下面我们来写一个百度代理的例子。也就是说,我们浏览器访问百度,首先会向我当前这个服务器发起请求。用我这服务器作为代理,去把百度的数据,然后下载下来,然后返回给浏览器。我先把下面这些代码先去掉。那么当客户端发起连接之后。在服务端。我要发起一个百度的链接。
08:03
这里边把I think TCP connection命名空间写上。I think这里发起一个异步的TTP连接。连接。百度的地址。因为百度都使用了HTTPS,所以这里边要使用HTTPS的端口。443,那这里边儿就不是啊80端口了,发起连接之后,那么当。
09:01
当百度返回数据之后。我要把这个数据返回给这个浏览器的链接,也就是这个connection。那这个连接是百度的。那百度的数据发过来之后。这里要柚子一下,柚子是PP的一个背包的用法。要把客户端的连接给柚子进来,用它方便在函数题里边来使用这个connection对象。那百度发来的数据,百度on message.
10:01
我要把这数字发给客户端,发给浏览器客户端。那么这个connection就是这个connection,那么这里通过use方法把这个connection给它啊use进来,那么在函数题里边你就可以直接使用它了。如果不使用U的话,那么在函数的内部是无法访问到外部的这个变量的。那同样的。当浏览器发来数据之后,我要把这数据转发给百度。同样也是柚子一下把百度的链接给柚子进来。
11:17
然后把数据发给Baidu。对于我们这个百度的连接是异步连接,那么在连接回调设置完之后,要执行一个。很难的。直线连接。那么这样的话就是。一个代理,一个简单的一个百度代理就做完了。我们来试一下效果吧。啊。那么这效果。哦,忘了一个东西。
12:03
这里也要改成43。因为它是HTTPS,不是HTTP型的,那端口是不一样的。你去到哪儿?启动之后。那么我们想要把我们的。啊,百度的访问,然后转发到我们的服务器上,那么需要配置一个host。那这个就是我刚才这个这个服务,这个服务所在的服务器,那我们把百度的请求转发给我这个服务。我这个服务。发起异步连接,去连接真正的百度服务器,然后把百度的服务啊,把百度返回的数据,然后返回给我的客户端。好,我们来试一下效果。
13:15
哦,应该是有语法错误。这里写错了,域名空间写错了可能。我那connection aic TCP kinect t.好,熄灯之后我们重新访问一下。我们看到。百度已经经过我们服务器代理,然后显示在这个浏览器里了。
14:04
I think TCP connection, 除了TTP协议之外,那么它也支持沃克曼自带的。T协议和frame协议。还有T也支持WSC,也就是可以把沃克man当做web soft客户端去连接远程web sock服务端。那目前HTTP协议还不支持。那么开发者不要使用HTTPC去异步连接远程服务端。啊,UDP也是不支持的。那么a think t connection, 那么也就讲到这里,那么今天的呃,教程就讲到这里啊,谢谢大家。
我来说两句