实战讲解:如何用Python搭建一个服务器
|
整个response分为起始行(start line), 头信息(head)和主体(body)三部分。起始行就是第一行:
它实际上又由空格分为三个片段,HTTP/1.x表示所使用的HTTP版本,200表示状态(status code),200是HTTP协议规定的,表示服务器正常接收并处理请求,OK是供人来阅读的status code。 头信息跟随起始行,它和主体之间有一个空行。 这里的text_content或者pic_content都只有一行的头信息,text_content用来表示主体信息的类型为html文本:
而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:
起始行可以分为三部分,第一部分为请求方法(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的客户端程序相类似。) (编辑:PHP编程网 - 湛江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |




