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生成pdf文件的方法
Aug 04 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
Python栈算法的实现与简单应用示例
Nov 01 Python
python 接口返回的json字符串实例
Mar 27 Python
django初始化数据库的实例
May 27 Python
Django和Flask框架优缺点对比
Oct 24 Python
python如何基于redis实现ip代理池
Jan 17 Python
详解Python中的分支和循环结构
Feb 11 Python
python文件操作seek()偏移量,读取指正到指定位置操作
Jul 05 Python
Python模块zipfile原理及使用方法详解
Aug 04 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
Pandas的数据过滤实现
Jan 15 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,不用COM,生成excel文件
2006/10/09 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
javascript 动态参数判空操作
2008/12/22 Javascript
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
javascript之AJAX框架使用说明
2010/04/24 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
js实现移动端轮播图
2020/12/21 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
详解Python中DOM方法的动态性
2015/04/11 Python
在Django框架中编写Context处理器的方法
2015/07/20 Python
通过数据库向Django模型添加字段的示例
2015/07/21 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
对python中数组的del,remove,pop区别详解
2018/11/07 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
final, finally, finalize的区别
2012/03/01 面试题
怎么样写好简历中的自我评价
2013/10/25 职场文书
竞选部长演讲稿
2014/04/26 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
公司捐书倡议书
2015/04/27 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
Golang 编译成DLL文件的操作
2021/05/06 Golang