Python 实现一个简单的web服务器


Posted in Python onJanuary 03, 2021
import re
import socket


def service_cilent(new_socket):
  request = new_socket.recv(1024).decode("utf-8")
  # Python splitlines() 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
  request_lines = request.splitlines()
  print(request_lines)
  file_name = ""
  ret = re.match(r"[^/]+(/[^ ]*)", request_lines[0])
  if ret:
    file_name = ret.group(1)
    if file_name == "/":
      file_name = "index.html"
  try:
    f = open(file_name, "rb")
  except:
    response = "HTTP/1.1 404 NOT FOUND\r\n\r\n"
    response += "------file not found-----"
    new_socket.send(response.encode("utf-8"))
  else:
    # 打开文件成功就读文件 然后关闭文件指针
    html_content = f.read()
    f.close()
    # 准备发送给浏览器的数据---header
    response = "HTTP/1.1 200 OK\r\n\r\n"
    # 将response header发送给浏览器
    new_socket.send(response.encode("utf-8"))
    # 将response body发送给浏览器
    new_socket.send(html_content)
  # 关闭套接字
  new_socket.close()


def main():
  # 创建套接字
  tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  # 绑定
  tcp_server_socket.bind(("", 7089))
  # 监听套接字
  tcp_server_socket.listen(128)
  while True:
    new_socket, cilent_addr = tcp_server_socket.accept()
    service_cilent(new_socket)
  # 关闭监听套接字
  tcp_server_socket.close()


if __name__ == '__main__':
  main()

以上就是Python 实现一个简单的web服务器的详细内容,更多关于python 实现web服务器的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现bitmap数据结构详解
Feb 17 Python
使用python实现strcmp函数功能示例
Mar 25 Python
Python中使用PIL库实现图片高斯模糊实例
Feb 08 Python
Python操作Redis之设置key的过期时间实例代码
Jan 25 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
Mar 14 Python
python利用re,bs4,requests模块获取股票数据
Jul 29 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
python3 深浅copy对比详解
Aug 12 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
使用keras时input_shape的维度表示问题说明
Jun 29 Python
Python基础之数据结构详解
Apr 28 Python
python实现对doc、txt、xls等文档的读写操作
Apr 02 Python
关于Python错误重试方法总结
Jan 03 #Python
详解python中的异常和文件读写
Jan 03 #Python
python绘制雷达图实例讲解
Jan 03 #Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
Jan 01 #Python
python安装mysql的依赖包mysql-python操作
Jan 01 #Python
python UDF 实现对csv批量md5加密操作
Jan 01 #Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 #Python
You might like
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
kafka-python批量发送数据的实例
2018/12/27 Python
使用python画社交网络图实例代码
2019/07/10 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
幼儿教师演讲稿
2014/05/06 职场文书
党的群众路线教育实践活动个人对照检查材料范文
2014/09/25 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
办公室卫生管理制度
2015/08/04 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS