python写web服务器教程_大牛讲基础:如何用python写一个简单的web服务器

今天用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、大数据学习资料分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值