今天用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>
领取专属 10元无门槛券
私享最新 技术干货