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之PyUnit单元测试实例
Oct 11 Python
python通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
Python实现base64编码的图片保存到本地功能示例
Jun 22 Python
python numpy 部分排序 寻找最大的前几个数的方法
Jun 27 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
Django 配置多站点多域名的实现步骤
May 17 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
Python中调用其他程序的方式详解
Aug 06 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 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截取中文字符串不乱码的方法
2013/12/25 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
py中的目录与文件判别代码
2008/07/16 Python
python将图片文件转换成base64编码的方法
2015/03/14 Python
Python下的subprocess模块的入门指引
2015/04/16 Python
Python版微信红包分配算法
2015/05/04 Python
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
Python函数装饰器实现方法详解
2018/12/22 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
python drf各类组件的用法和作用
2021/01/12 Python
Python中的流程控制详解
2021/02/18 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
室内设计专业学生的自我评价分享
2013/11/27 职场文书
保安2014年终工作总结
2014/12/06 职场文书
春季运动会开幕词
2015/01/28 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
Python import模块的缓存问题解决方案
2021/06/02 Python
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技