今天用python写一个简单的web服务器代码网上都有只是为了方便大家学习做了一个简单的教程
第一首先我们来一张架构以及运行过程的流程图
简单来说就是web服务器一直监听是否有来自用户的请求
1.如果有请求判断请求得html文件是否存在
2.存在就返回html文件给用户
3.不存在就返回一个404的错误给用户
效果
下面贴上这次实现的代码
#-*- coding:utf-8 -*-
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
class MyHandler(BaseHTTPRequestHandler): #继承BaseHTTPRequestHandler类里面所有的方法
def do_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 没有找到文件
def main():
try:
server = HTTPServer(('', 8088), MyHandler)
#实例化对象server调用HTTPServer类 并传进去一个8088(socket服务监听的端口) 并把我们自己写的类传进去
print 'welcome to the machine...'
#打印欢迎信息
print 'ctrl+c quit'
#退出方法
server.serve_forever()
#调用serve_forver方法让程序一直监听8088端口并循环等待用户请求
except KeyboardInterrupt:
print 'ctrl+c received, shuttingdow server'
#如果监听到键盘输入crtl+c就停止程序
server.socket.close()
if __name__ == '__main__':
main()
Html代码 ceshi.html
Title测试页面
评论+转发后私信小编“资料”即可获取最新最全java、python、大数据学习资料分享!