加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

拭魅战讲授:怎样用Python搭建一个处事器

发布时间:2018-12-19 11:20:10 所属栏目:业界 来源:马哥Linux运维
导读:有人说暗示只学Python没有效,必需学会一个框架(好比Django和web.py)才气找到事变。 着实把握一个相同于框架的高级器材是有效的,可是基本的对象可以让你永久不被裁减,不要被器材限定了本身的成长。 本日不行使框架,也不行使Python尺度库中的高级包,只

整个response分为起始行(start line), 头信息(head)和主体(body)三部门。起始行就是第一行:

拭魅战讲授:怎样用Python搭建一个处事器

它现实上又由空格分为三个片断,HTTP/1.x暗示所行使的HTTP版本,200暗示状态(status code),200是HTTP协议划定的,暗示处事器正常吸取并处理赏罚哀求,OK是供人来阅读的status code。

头信息跟从起始行,它和主体之间有一个空行。

这里的text_content可能pic_content都只有一行的头信息,text_content用来暗示主体信息的范例为html文本:

拭魅战讲授:怎样用Python搭建一个处事器

而pic_content的头信息(Content-Type: image/jpg)声名主体的范例为jpg图片(image/jpg)。

主体信息为html可能jpg文件的内容。

(留意,对付jpg文件,我们行使'rb'模式打开,是为了与windows兼容。由于在windows下,jpg被以为是二进制(binary)文件,在UNIX体系下,则不必要区分文本文件和二进制文件。)

我们并没有写客户端措施,后头我们会用赏识器作为客户端。

request由客户端措施发给处事器。

尽量request也可以像response那样分为三部门,request的名目与response的名目并不沟通。

request由客户发送给处事器,好比下面是一个request:

拭魅战讲授:怎样用Python搭建一个处事器

起始行可以分为三部门,第一部门为哀求要领(request method),第二部门是URL,第三部门为HTTP版本。

request method可以有GET, PUT, POST, DELETE, HEAD。最常用的为GET和POST。

GET是哀求处事器发送资源给客户,POST是哀求处事器吸取客户送来的数据。

当我们打开一个网页时,我们凡是是行使GET要领;当我们填写表格并提交时,我们凡是行使POST要领。

第二部门为URL,它凡是指向一个资源(处事器上的资源可能其余处所的资源)。像此刻这样,就是指向当前处事器的当前目次的test.jpg。

凭证HTTP协议的划定,处事器必要按照哀求执行必然的操纵。

正如我们在处事器措施中看到的,我们的Python措施先搜查了request的要领,随后按照URL的差异,来天生差异的response(text_content可能pic_content)。

随后,这个response被发送回给客户端。

行使赏识器尝试

为了共同上面的处事器措施,我已经在安排Python措施的文件夹里,生涯了一个test.jpg图片文件。

我们在终端运行上面的Python措施,作为处事器端,再打开一个赏识器作为客户端。

(假若偶然刻,你也完全可以用Python写一个客户端。道理与上面的TCP socket的客户端措施相相同。)

在赏识器的地点栏输入:

拭魅战讲授:怎样用Python搭建一个处事器

(虽然,你也可以用令一台电脑,并输入处事器的IP地点)

OK,我已经有了一个用Python实现的,并从socket写起的处事器了。

从终端,我们可以看到,赏识器现实上发出了两个哀求。

第一个哀求为 (要害信息在起始行,这一个哀求的主体为空):

拭魅战讲授:怎样用Python搭建一个处事器

我们的Python措施按照这个哀求,发送给处事器text_content的内容。

赏识器吸取到text_content之后,发明正文的html文本中有,知道必要得到text.jpg文件来增补为图片,当即发出了第二个哀求:

拭魅战讲授:怎样用Python搭建一个处事器

我们的Python措施说明过起始行之后,发明/test.jpg切合if前提,以是将pic_content发送给客户。

最后,赏识器按照html说话的语法,将html文本和图画以恰当的方法表现出来。(html可参考http://www.w3schools.com/html/default.asp)

试探的偏向

1) 在我们上面的处事器措施中,我们用while轮回来让处事器一向事变下去。

现实上,我们还可以按照多线程的常识,将while轮回中的内容改为多历程可能多线程事变。

2) 我们的处事器措施还不完美,我们还可以让我们的Python措施挪用Python的其他成果,以实现更伟大的成果。好比说建造一个时刻处事器,让处事器向客户返回日期和时刻。你还可以行使Python自带的数据库,来实现一个完备的LAMP处事器。

3) socket包是较量底层的包。Python尺度库中尚有高层的包,好比SocketServer,SimpleHTTPServer,CGIHTTPServer,cgi。这些都包都是在辅佐我们更轻易的行使socket。假如你已经相识了socket,那么这些包就很轻易大白了。操作这些高层的包,你可以写一个相等成熟的处事器。

4) 在经验了全部的辛勤和贫困之后,你也许发明,框架是那么的利便,以是抉择去行使框架。可能,你已经有了参加到框架开拓的热情。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读