python实现简单的http服务器_Python实现简单HTTP服务器(二)
#coding:utf-8
importsocketimportreimportsysfrom multiprocessing importProcessclassHTTPServer(object):def __init__(self, application):"""application:指的是框架的app"""self.server_socket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
self.app=applicationdefstart(self):
self.server_socket.listen(128)whileTrue:
client_socket, client_address=self.server_socket.accept()print("[%s, %s]用户连接上了" %client_address)
handle_client_process= Process(target=self.handle_client, args=(client_socket,))
handle_client_process.start()
client_socket.close()defstart_response(self, status, headers):
response_headers= "HTTP/1.1" + status + "\r\n"
for header inheaders:
response_headers+= "%s: %s\r\n" %header
self.response_headers=response_headersdefhandle_client(self, client_socket):"""处理客户端请求"""
#获取客户端请求数据
request_data = client_socket.recv(1024)print("request data:", request_data)
request_lines=request_data.splitlines()for line inrequest_lines:print(line)#解析请求报文
request_start_line =request_lines[0]#提取用户请求的文件名及请求方法
file_name = re.match(r"\w+ +(/[^ ]*)", request_start_line.decode("utf-8")).group(1)
method= re.match(r"(\w+) +/[^ ]*", request_start_line.decode("utf-8")).group(1)
env={"PATH_INFO": file_name,"METHOD": method
}
response_body=self.app(env, self.start_response)
response= self.response_headers + "\r\n" +response_body#向客户端返回响应数据
client_socket.send(bytes(response, "utf-8"))#关闭客户端连接
client_socket.close()defbind(self, port):
self.server_socket.bind(("", port))defmain():if len(sys.argv) < 2:
sys.exit("python MyWebServer.py Module:app")
module_name, app_name= sys.argv[1].split(":")#module_name = "MyWebFrameWork"
#app_name = "app"
m = __import__(module_name)
app=getattr(m, app_name)
http_server=HTTPServer(app)
http_server.bind(8000)
http_server.start()if __name__ == "__main__":
main()
python实现简单的http服务器_Python实现简单HTTP服务器(二)相关推荐
- python调用scp上传目录_Python调用scp向服务器上传文件示例
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- python搭建web服务器_Python搭建简单的web服务器
Python搭建简单的web服务器 1.win+R输入cmd打开命令行 2.通过 cd 进入到你保存 HTML 文件的目录.例如:H:\D3\d3 输入 cd\ 指令进入到C盘的根目录.(CD(更改目 ...
- python 做网站用服务器_Python实现简单的Web服务器 Part2—支持动态网站
1. 什么是CGI? CGI即通用网关接口(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程 ...
- python实现简单的http服务器_python实现简单http服务器功能
背景 写一个python脚本,实现简单的http服务器功能: 1.浏览器中输入网站地址:172.20.52.163:20014 2.server接到浏览器的请求后,读取本地的index.html文件的 ...
- python做一个登录注册界面_Python 实现简单的登录注册界面
Python 实现简单的登录注册界面 注意:编写代码之前需要导入很重要的包 import tkinter as tk import pickle from tkinter import message ...
- python文字识别并获取位置_python实现简单的文字识别
将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR).今天我们用到的就是一个OCR 库--Tesseract. 首先要安装Tesseract,除 ...
- python中excel制作成绩报表_python制作简单excel统计报表2之操作excel的模块openpyxl简单用法...
python制作简单excel统计报表2之操作excel的模块openpyxl简单用法 # coding=utf-8 from openpyxl import Workbook, load_workb ...
- python登录系统的实现方法_python实现简单登陆系统
新手,虽然比较简单的东西,但是弄了我很久. 很多不完善的地方,比如锁定用户,同一用户输入错三次密码就会锁定,但是如果在第二第三次换了用户再输入原来的用户,则计数会重新计算. 另外不存在的用户输入密码错 ...
- python怎么实现音乐快进_Python 超简单3行代码提取音乐高潮(附批量提取)
有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来听听效果,孤芳自赏提取高潮后的部分: 怎么样,是不是迫不及待想往 ...
最新文章
- Lua 数据类型介绍
- 【重磅收藏】智源发布《人工智能的认知神经基础白皮书》
- 第十一章:WEB浏览器中的javascript
- 供配电负荷计算方法详解
- 成功解决ModuleNotFoundError: No module named 'torch.utils.tensorboard'
- 【转载】CMenu自绘---钩子---去除边框
- LiveVideoStackCon 2018 注册通道即将关闭
- MATLAB新手教程
- 開發MOSS2007 Masterpage的一些經驗
- python 3.5安装pywin32
- c++ linux 线程等待与唤醒_Linux驱动程序基石-POLL机制(附.视频)
- 【常识】2016-10-26
- python解读器_Python装饰器完全解读
- PhotoShop2018安装与破解教程
- uint8_t、uint16_t、uint32_t、uint64_t
- order by排序出现问题
- python 语义similarity_GitHub - samelltiger/word_similarity: 基于《知网》的语义相似度计算 python2.7 API...
- KMP字符串模式匹配算法【精简代码模板】
- 解决Word文章表格中无法自动换页的问题,表格结尾处像是被下一页覆盖掉了
- 字符串转换成数字的三种方法 js
热门文章
- Linux命令行与shell脚本编程大全:第2版
- C# Task注意事项
- 卷积神经网络学习笔记与心得(4)池化
- delphi自定义事件处理
- 【Web API系列教程】1.2 — Web API 2中的Action Results
- 我的JavaScript学习笔记
- 使用Fiddler手机抓包https-----重要
- ANDROID_MARS学习笔记_S01_011ProgressBar
- 成都Uber优步司机奖励政策(1月9日)
- Hide the common top menu in Ubuntu 12.04