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 相关文章推荐
wxpython中利用线程防止假死的实现方法
Aug 11 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
浅谈python中字典append 到list 后值的改变问题
May 04 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
Django如何简单快速实现PUT、DELETE方法
Jul 24 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
Python线程指南分享
Nov 19 Python
python Jupyter运行时间实例过程解析
Dec 13 Python
Python面向对象原理与基础语法详解
Jan 02 Python
python 实时调取摄像头的示例代码
Nov 25 Python
python中绕过反爬虫的方法总结
Nov 25 Python
Python 中random 库的详细使用
Jun 03 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中的串行化变量和序列化对象
2006/09/05 PHP
php mysql索引问题
2008/06/07 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
python实现将excel文件转化成CSV格式
2018/03/22 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python实现邮件自动发送
2019/08/10 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
python实现简单井字棋小游戏
2020/03/05 Python
Python hashlib模块的使用示例
2020/10/09 Python
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
趣味活动策划方案
2014/02/08 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
社区灵活就业证明
2014/11/03 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
大队委员竞选稿
2015/11/20 职场文书
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers