python实现静态服务器


Posted in Python onSeptember 05, 2019

本文实例为大家分享了python静态服务器的具体代码,供大家参考,具体内容如下

#coding:utf-8
import socket
import multiprocessing
import re


HTML_ROOT_DIR = "./html"

class HTTPServer(object):

  #初始化
  def __init__(self):
    self.serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)


  #开启服务器启动进程
  def start(self):
    self.serversocket.listen(128)
    while True:
      clintsocket, addree = self.serversocket.accept()
      hanlderprogess = multiprocessing.Process(target=self.xiexi, args=(clintsocket,))
      hanlderprogess.start()
      clintsocket.close()

  #绑定端口
  def bind(self,port):
    self.serversocket.bind(("", port))


  #获取请求头,进行解析,同时发送相应头
  def xiexi(clserver):
    date = clserver.recv(1024)
    print date
    list = str(date).split("\r\n")
    # 解析
    requesthead = list[0]
    print requesthead
    #使用正则表达式解析出请求头的文件名称
    file = re.match(r"\w+ +(/[^ ]*) ",requesthead).group(1)

    #对获取的问题名判断,如果是/的就进行显示index.html
    if "/"==file:
      file = "/index.html"
    try:
      f = open(HTML_ROOT_DIR+file,"rb")
    except:
      response_start_line = "HTTP/1.1 200 OK \r\n"
      response_headers = "Server:My server\r\n"
      response_body = "the file not file"
    else:
      file_date = f.readline()
      f.close()
      response_start_line = "HTTP/1.1 200 OK \r\n"
      response_headers = "Server:My server\r\n"
      response_body = file_date.decode("utf-8")

    response = response_start_line+response_headers+"\r\n"+response_body
    print response
    clserver.send(bytes(response))
    clserver.close()

def main():
  server = HTTPServer()
  server.bind(1001)
  server.start()

if __name__=="__main__":
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python访问系统环境变量的方法
Apr 29 Python
python和bash统计CPU利用率的方法
Jul 10 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
儿童python练习实例
May 27 Python
python 除法保留两位小数点的方法
Jul 16 Python
python FTP批量下载/删除/上传实例
Dec 22 Python
python ftplib模块使用代码实例
Dec 31 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 Python
Pytest中skip skipif跳过用例详解
Jun 30 Python
python编写简单端口扫描器
Sep 04 #Python
python 3.6.7实现端口扫描器
Sep 04 #Python
python用线性回归预测股票价格的实现代码
Sep 04 #Python
python多线程扫描端口(线程池)
Sep 04 #Python
Python数据分析模块pandas用法详解
Sep 04 #Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 #Python
基于python全局设置id 自动化测试元素定位过程解析
Sep 04 #Python
You might like
人族 Terran 魔法与科技
2020/03/14 星际争霸
使用php验证复选框有效性的示例
2013/11/13 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
javascript FormatNumber函数实现方法
2008/12/30 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
python实现文件的分割与合并
2019/08/29 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
django 模型中的计算字段实例
2020/05/19 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
战略合作协议书范本
2014/04/18 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
mysql配置SSL证书登录的实现
2021/09/04 MySQL
Python实现简单的俄罗斯方块游戏
2021/09/25 Python