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装饰器使用方法实例
Nov 21 Python
Python常用列表数据结构小结
Aug 06 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
Selenium定时刷新网页的实现代码
Oct 31 Python
python广度优先搜索得到两点间最短路径
Jan 17 Python
python学生管理系统
Jan 30 Python
Python numpy线性代数用法实例解析
Nov 15 Python
python3 实现调用串口功能
Dec 26 Python
python利用百度云接口实现车牌识别的示例
Feb 21 Python
Virtualenv 搭建 Py项目运行环境的教程详解
Jun 22 Python
Python urllib3软件包的使用说明
Nov 18 Python
python实现网络五子棋
Apr 11 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
了解一点js的Eval函数
2012/07/26 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
Python搜索引擎实现原理和方法
2017/11/27 Python
django框架自定义用户表操作示例
2018/08/07 Python
Python中psutil的介绍与用法
2019/05/02 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
农村婚礼主持词
2014/03/13 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
化工专业求职信
2014/07/01 职场文书
个人授权委托书格式
2014/08/30 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
银行先进个人总结
2015/02/15 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS