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实现装饰器、描述符
Feb 28 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
对Python定时任务的启动和停止方法详解
Feb 19 Python
python基础知识(一)变量与简单数据类型详解
Apr 17 Python
关于python中密码加盐的学习体会小结
Jul 15 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
python实现人机猜拳小游戏
Feb 03 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
Python中的min及返回最小值索引的操作
May 10 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 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
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
PHP文件上传实例详解!!!
2007/01/02 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
JS 图片缩放效果代码
2010/06/09 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
js取得url地址参数实例
2013/02/22 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
VUE预渲染及遇到的坑
2018/09/03 Javascript
微信小程序实现分享朋友圈的图片功能示例
2019/01/18 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
解决Python中回文数和质数的问题
2019/11/24 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
python dict乱码如何解决
2020/06/07 Python
个人求职简历中英文自我评价
2013/12/16 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
未中标通知书
2015/04/17 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
地震捐款简报
2015/07/21 职场文书