首页
学习
活动
专区
工具
TVP
发布

一个简单的web服务器%28python%29

今天用python写一个简单的web服务器代码网上都有只是为了方便大家学习做了一个简单的教程

第一首先我们来一张架构以及运行过程的流程图

简单来说就是web服务器一直监听是否有来自用户的请求

1.如果有请求判断请求得html文件是否存在

2.存在就返回html文件给用户

3.不存在就返回一个404的错误给用户

效果

下面贴上这次实现的代码

#-*- coding:utf-8 -*-

fromBaseHTTPServerimportBaseHTTPRequestHandler,HTTPServer

classMyHandler(BaseHTTPRequestHandler):#继承BaseHTTPRequestHandler类里面所有的方法

defdo_GET(self):

try:

#当服务器接收到GET请求后调用此方法并尝试打开客户端传来的路径('移除前导"/"')如果一切正常就会return一个ok

#比如我的url是127.0.0.1/cehsi.html (第八行)会读取当前路径下面的ceshi.html

files =open(self.path[1:],'r')

self.send_response(200)

#如果找到了就返回一个200

self.send_header('Content-type','text/html')

#这个是数据的头部文件

self.wfile.write(files.read())

#读取html文件并返回给用户

files.close()

#释放文件占用的系统资源

except:

self.send_error(404,'File not found: %s '%self.path)

#如果报错就提示404没有找到文件

defmain():

try:

server = HTTPServer(('',8088), MyHandler)

#实例化对象server调用HTTPServer类并传进去一个8088(socket服务监听的端口)并把我们自己写的类传进去

print'welcome to the machine...'

#打印欢迎信息

print'ctrl+c quit'

#退出方法

server.serve_forever()

#调用serve_forver方法让程序一直监听8088端口并循环等待用户请求

exceptKeyboardInterrupt:

print'ctrl+c received, shuttingdow server'

#如果监听到键盘输入crtl+c就停止程序

server.socket.close()

if__name__ =='__main__':

main()

Html代码ceshi.html

html>

htmllang="en">

head>

metacharset="UTF-8">

title>Title>

head>

body>

h1>测试页面>

body>

html>

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180606G24KYM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券