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中使用装饰器时需要注意的一些问题
May 11 Python
Python中几种导入模块的方式总结
Apr 27 Python
Python基础之getpass模块详细介绍
Aug 10 Python
Python中import机制详解
Nov 14 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
Dec 14 Python
Python模块文件结构代码详解
Feb 03 Python
对python append 与浅拷贝的实例讲解
May 04 Python
python匹配两个短语之间的字符实例
Dec 25 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
详解Python修复遥感影像条带的两种方式
Feb 23 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 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 CodeIgniter框架的工作原理研究
2015/03/30 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
鼠标事件延时切换插件
2011/03/12 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
python人人网登录应用实例
2014/09/26 Python
Python计算字符宽度的方法
2016/06/14 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
python模块之paramiko实例代码
2018/01/31 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
python Pandas库基础分析之时间序列的处理详解
2019/07/13 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
德国拖鞋网站:German Slippers
2019/11/08 全球购物
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
车贷收入证明范本
2014/01/09 职场文书
给同学的道歉信
2014/01/16 职场文书
全神贯注教学反思
2014/02/03 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
倡议书格式及范文
2015/04/29 职场文书
老公出轨后的保证书
2015/05/08 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python
Golang二维数组的使用方式
2021/05/28 Golang
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers