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访问纯真IP数据库的代码
May 19 Python
Python 装饰器深入理解
Mar 16 Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 Python
python实现list元素按关键字相加减的方法示例
Jun 09 Python
python运行其他程序的实现方法
Jul 14 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
python cv2截取不规则区域图片实例
Dec 21 Python
Python是什么 Python的用处
May 26 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 13 Python
python实现进度条的多种实现
Apr 29 Python
Python+Appium实现自动抢微信红包
May 21 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
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
php实现encode64编码类实例
2015/03/24 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
2017/04/18 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
简单了解python的内存管理机制
2019/07/08 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
pycharm新建一个python工程步骤
2019/07/16 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
英国团购网站:Groupon英国
2017/11/28 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
主管竞聘书范文
2014/03/31 职场文书
高三毕业寄语
2014/04/10 职场文书
初中化学教学反思
2016/02/22 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
Oracle 触发器trigger使用案例
2022/02/24 Oracle
Python软件包安装的三种常见方法
2022/07/07 Python