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中的getopt函数使用详解
Jul 28 Python
详解python中字典的循环遍历的两种方式
Feb 07 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
Python3用tkinter和PIL实现看图工具
Jun 21 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
Python学习笔记之集合的概念和简单使用示例
Aug 22 Python
python是否适合网页编程详解
Oct 04 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
python实现井字棋小游戏
Mar 04 Python
python3的pip路径在哪
Jun 23 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 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 imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
php中字符集转换iconv函数使用总结
2014/10/11 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
PHP的几个常用加密函数
2016/02/03 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
js验证表单第二部分
2006/11/25 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
python实现趣味图片字符化
2019/04/30 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
大学生最常用的自我评价
2013/12/07 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
敬老院活动总结
2014/04/28 职场文书
考博导师推荐信范文
2015/03/27 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers