python实现web服务器_python实现web服务器
本想写一篇关于http->nginx->php这个过程中数据是怎么传输的文章,想了半天,实在没有心情去写。刚好看了一下python,就想着用python实现一下web服务器的过程。这个很简单,目前只支持静态文件的加载,动态语言就要接入fastcgi了(目前还在看fastcgi,下一版本更新吧)。以前没写过python也是边写边查,好多东西用的不是特别好,还有,可以在这个基础上改动,可以支持access.log,多server配置。这里就不写了。
其实过程很简单,nginx大体也是这个逻辑(但是,nginx内部就复杂多了)。
创建socket,监听80端口(可以自设)
解析http协议中的request(获取你想要的参数)
通过获取的参数取服务器上找到相应的静态资源(这里只说静态资源,动态的下一篇再说)
组织http协议的response
通过80端口返回给客服端
#/usr/bin/python
import socket
import sys
import os
from thread import *
HOST = '';PORT = 8887
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
try:
s.bind((HOST, PORT))
except socket.error , msg:
print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
sys.exit()
print 'Socket bind complete'
s.listen(10)
print 'Socket now listening'
def assces_log(request):
fp = open('http.log', "aw")
fp.write(request+"\r\n")
fp.close()
def parse_request(request):
request = request.splitlines()
line = request[0]
line = line.split();
dict_request = {'method':line[0], 'path':line[1], 'version':line[2]}
return dict_request
while True:
conn, addr = s.accept()
request = conn.recv(1024)
print request
print "\r\n"
dist_request = parse_request(request)
path = dist_request['path']
path = os.getcwd() + path
if os.path.isfile(path):
if os.path.exists(path):
fp = open(path, "r")
reply = fp.read()
fp.close()
response_errno = 200
response_msg = 'OK'
else:
reply = 'Not found page'
response_errno = 404
response_msg = 'Not found'
else:
reply = 'Forbidden'
response_errno = 403
response_msg = 'Forbidden'
response = "HTTP/1.1 " + str(response_errno) + " " + response_msg + "\r\n"
response += "\r\n"
response += reply
print response
assces_log(request)
conn.sendall(response)
conn.close()
s.close()
python实现web服务器_python实现web服务器相关推荐
- python如何收集数据库_python 整理web数据库
从GitHub中整理出来的15个最受欢迎的Python开源框架,你喜欢哪个 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信, ...
- python网站模板下载_Python 的 Web 应用程序模板 - Visual Studio | Microsoft Docs
Python Web 应用程序项目模板Python web application project templates 01/28/2019 本文内容 Visual Studio 中的 Python ...
- python怎么重启内核_python怎么重启服务器
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- asp.net web开发框架_Python之Web开发框架学习 发送电子邮件
Django带有易于使用的轻型引擎来发送电子邮件.与Python类似,您只需要导入smtplib.在Django中,您只需要导入django.core.mail.要开始发送电子邮件,请编辑您的项目se ...
- python 简单web音频_Python Twisted web服务器音频fi
我尝试用python中的twisted创建一个简单的web服务器.不过,我无法提供m4a音频文件.在 在当前程序中,当我加载http://localhost:8880/mp3.html时,它可以正常工 ...
- python 搭建的http 动态服务器_Python 创建HTTP服务器的简单示例
这篇文章主要为大家详细介绍了Python 创建HTTP服务器的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...
- python django前端框架_Python的Web应用框架–Django
一:简介 python的web框架有很多,个人查了一下,有Django.Pylons. Tornado.Bottle和Flask等,其中使用人数最多的是Django,而我学习Django也是因为ope ...
- python编写web接口_Python写web接口
前言 最近在看有关python的一些知识.是关于深度学习的东西,但是很不明白,因为自己的数学功底太差.之前总是想搞一些关于算法的东西,又不会,这就想起来了大二实训老师的话.这个老师挺好,和我聊了两堂课 ...
- python django flask介绍_Python开发WEB框架Flask详细介绍
Flask简介 Flask是一个相对于Django而言轻量级的Web框架. 和Django大包大揽不同,Flask建立于一系列的开源软件包之上,这其中 最主要的是WSGI应用开发库Werkzeug和模 ...
最新文章
- 【数据结构与算法】之深入解析“两数相除”的求解思路与算法示例
- 多线程学习(二)----AfxBeginThread
- MYSQL存储引擎笔记
- 重用生成的JAXB类
- 缓存中间件-Memcache命令介绍
- ES6、TYPESCRIPT、ATSCRIPT和BABEL是什么玩意儿
- 恶意软件借手机游戏强行吸取流量,使用代码签名证书验明证身
- appium操作多台手机_Appium常见问题解答
- 基于MATLAB的数字滤波器之低通滤波器
- 你该知道的杂志分区和影响因子及最新表格下载
- Tab Layout教程
- 最新谷歌GOOGLE搜索命令大全
- Android中常用的一些颜色色值color整理
- PHP做一个直角三角形,三角形角度(直角三角形懒人计算器)
- 网络打印机拒绝访问,无法连接处理方法汇总
- Mac 双系统分区合并
- 学编程难吗?多久能入门?
- html5合影拍照小游戏,html5实现简单别踩白块小游戏
- 常见邮件服务器 接收服务器和发送邮件服务器 地址
- 理论力学---广义坐标和广义力
热门文章
- 每秒 10 万并发的 BI 系统如何频繁发生 Young GC?
- Kotlin 和 Flutter 对于开发者究竟意味着什么?
- C 主导、C++与 C# 为辅,揭秘 Windows 10 源代码!
- PHP 8 中确认支持 JIT!
- 英特尓祭出开挖数据价值的“六脉神剑”!
- 我为什么要帮你查 Bug?
- 程序员如何“炼”成算法大师? | 附完整代码
- 智能音箱扎堆的技术红海,Rokid 如何杀出一条血路?
- javaweb实训第四天下午——员工管理系统-JSPServletJDBC综合练习-CRUD
- 给2021的Java一些建议,纯干货