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 第一步 hello world
Sep 25 Python
Python lambda和Python def区别分析
Nov 30 Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
Python-OpenCV基本操作方法详解
Apr 02 Python
linux查找当前python解释器的位置方法
Feb 20 Python
python调用webservice接口的实现
Jul 12 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
Python如何使用ElementTree解析xml
Oct 12 Python
Python 多进程、多线程效率对比
Nov 19 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数组应该有多大的分析
2009/07/30 PHP
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
python3音乐播放器简单实现代码
2020/04/20 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
python之mock模块基本使用方法详解
2019/06/27 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
python中安装django模块的方法
2020/03/12 Python
如何通过命令行进入python
2020/07/06 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
自荐信格式的六要素
2013/09/21 职场文书
劳资人员岗位职责
2013/12/19 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
个人安全承诺书
2014/05/22 职场文书
地陪导游欢迎词
2015/01/26 职场文书