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中操作字典之update()方法的使用
May 22 Python
Python多层嵌套list的递归处理方法(推荐)
Jun 08 Python
Ruby元编程基础学习笔记整理
Jul 02 Python
轻松掌握python设计模式之访问者模式
Nov 18 Python
基于python内置函数与匿名函数详解
Jan 09 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
Python并发之多进程的方法实例代码
Aug 15 Python
django小技巧之html模板中调用对象属性或对象的方法
Nov 30 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
详解python3 + Scrapy爬虫学习之创建项目
Apr 12 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
Python 键盘事件详解
Nov 11 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
基于mysql的bbs设计(一)
2006/10/09 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
帝国cms常用标签汇总
2015/07/06 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
php多进程应用场景实例详解
2019/07/22 PHP
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
Vue组件开发初探
2017/02/14 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
python命令行参数sys.argv使用示例
2014/01/28 Python
python中__call__方法示例分析
2014/10/11 Python
vscode 远程调试python的方法
2017/12/01 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
canvas线条的属性详解
2018/03/27 HTML / CSS
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
密封类可以有虚函数吗
2014/08/11 面试题
成考报名单位证明范本
2014/01/16 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
学习雷锋活动总结
2014/04/29 职场文书
购房公证委托书(2014版)
2014/09/12 职场文书
会计实训报告范文
2014/11/04 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL