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 当前全局变量和入口参数的所有属性
Jul 01 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
Apr 01 Python
详解Python使用simplejson模块解析JSON的方法
Mar 24 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
Python socket聊天脚本代码实例
Jan 02 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 Python
Python学习笔记之装饰器
Aug 06 Python
python 基于selectors库实现文件上传与下载
Dec 31 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在文件指定行中写入代码的方法
2012/05/23 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
使用js画图之饼图
2015/01/12 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
制作部班长职位说明书
2014/02/26 职场文书
读书小明星事迹材料
2014/05/03 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
Python图像处理库PIL详细使用说明
2022/04/06 Python