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 相关文章推荐
基于wxpython实现的windows GUI程序实例
May 30 Python
由浅入深讲解python中的yield与generator
Apr 05 Python
Python简单生成8位随机密码的方法
May 24 Python
python3如何将docx转换成pdf文件
Mar 23 Python
对pandas replace函数的使用方法小结
May 18 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
python如何从文件读取数据及解析
Sep 19 Python
wxpython+pymysql实现用户登陆功能
Nov 19 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 Python
django 模型中的计算字段实例
May 19 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
Jan 05 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 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
一步一步学习PHP(2)――PHP类型
2010/02/15 PHP
ThinkPHP 模板引擎使用详解
2017/05/07 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
python进程与线程小结实例分析
2018/11/11 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
[01:31]完美与DOTA2历程
2014/07/31 DOTA
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
python分割和拼接字符串
2013/11/01 Python
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
python正则表达式match和search用法实例
2015/03/26 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
战略合作意向书范本
2014/04/01 职场文书
会计专业自荐信
2014/06/03 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
团员个人年度总结
2015/02/26 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
MySQL之DML语言
2021/04/05 MySQL
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫