Python实现HTTP服务器(二)返回指定的html页面
通过前一篇博客我们可以了解,当在浏览器端输入127.0.0.1:7890时会发送request请求,格式为GET / HTTP/1.1,如果指定访问页面输入127.0.0.1:7890/index.html时request请求,格式为GET /index.html HTTP/1.1。
因此我们可以通过正则表达式提取出index.html,然后将本地的index.html读取发送给浏器,得到相应的页面。
import re
import socketdef service_client(new_socket):"""为这个客户端返回数据"""# 1.接收浏览器发送过来的请求,即HTTP请求request=new_socket.recv(1024)request=request.decode("utf-8") # 解码request_lines=request.splitlines() # 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表print(request_lines)# GET /index.html HTTP/1.1# [^/]表示除了/都可以file_name=""ret=re.match(r"[^/]+(/[^ ]*)",request_lines[0])if ret:file_name=ret.group(1)if file_name=="/":file_name="/index.html"# 2.返回HTTP格式的数据,给浏览器try:# 准备发送的body,打开HTML文件f=open("html"+file_name,'rb')except:response="HTTP/1.1 404 NOT FOUND\r\n"response+='\r\n'response+="----file not found----"new_socket.send(response.encode("utf-8"))else:html_content=f.read()f.close()# 准备发送的headerresponse="HTTP/1.1 200 OK\r\n"response+="\r\n" # header与body之间必须隔一行# 发送headernew_socket.send(response.encode("utf-8"))# 发送HTMLnew_socket.send(html_content)new_socket.close()def main():tcp_sever_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 服务器先关闭,保证重新开启不占用端口tcp_sever_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)tcp_sever_socket.bind(("",7890))tcp_sever_socket.listen(128)while True:# 等待新客户端的链接new_socket,client_addr=tcp_sever_socket.accept()service_client(new_socket)# 关闭监听套接字tcp_sever_socket.close()
if __name__ == '__main__':main()
Python实现HTTP服务器(二)返回指定的html页面相关推荐
- flutter 返回指定界面_Flutter页面路由导航及传参
转载请注明出处: https://learnandfish.com/ 概述 每个应用都有很多个页面,在flutter中同样也有很多页面,被称之为路由(Router),页面之间的跳转通过导航器(Navi ...
- 乐鑫Esp32学习之旅13 esp32 内置 dns 服务器,无需外网访问域名返回指定网页。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- python输入日期计算天数_用python计算日期(1、返回指定日期所在的一周,2,计算一个日期的月份和天数加减)...
放两个小轮子吧,欢迎测试bug,然后告诉我: 1.返回指定日期所在的一周 2,计算一个日期的月份和天数加减 # -*- coding: utf-8 -*- """ Cre ...
- Python操作FTP服务器实现文件和文件夹的上传与下载,python清理ftp目录下的所有文件和非空文件夹
Python 连接 FTP 服务器并实现文件夹上传实例演示 第一章:连接 FTP 服务器并实现文件夹上传 ① 连接 FTP 服务器 ② 区分文件和文件夹名 ③ 文件夹名包含空格处理 ④ 使用递归实现: ...
- python搭建HTTP服务器
文章目录 前言 一.HTTP服务器搭建 二.功能强化 前言 项目经常需要HTTP对接,模拟HTTP client请求可以使用postman测试,模拟HTTP server回复该如何处理?本文介绍通过p ...
- python --搭建FTP服务器
一.了解FTP服务器 二.利用python搭建FTP服务器 1.安装 pyftpdlib 模块 2.找到pyftpdlib模块源文件所在目录 3.到 pyftpdlib目录下 4. 编写并运行FTP代 ...
- 图片上传指定服务器上,上传图片,通过node服务器存储在指定目录
最近做毕设,需要上传图片,因为在本地服务器运行,所以想着前端上传后,通过node服务器接收图片,存储在指定的目录下. 一.前端实现 1.前端的页面和上传图片是利用element-ui组件实现的,&qu ...
- python怎么调用函数的返回值类型,10、Python基础之函数的调用与返回值
一.函数参数 1.1 不定长参数 当我们定义函数时,可能需要定义一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数. 我们可以在形参前面加上一个 * ,这样这个形参就可以获取所有的实参,它将 ...
- Python 连接FTP服务器并实现文件夹下载实例演示,python区分ftp目录下文件和文件夹方法,ftp目录下包含中文名问题处理
Python 连接 FTP 服务器并实现文件夹下载实例演示 第一章:连接 FTP 服务器并实现文件夹下载 ① 连接 FTP 服务器 ② 进入指定目录并显示文件信息 ③ 区分文件和文件夹名 ④ 文件夹名 ...
最新文章
- JS删除数组指定下标并添加到数组开头
- anaconda怎么下载python3.6_Anaconda Python3.6下载
- linux简单设计与实现代码,《linux内核设计与实现》第五章(示例代码)
- 5、【华为HCIE-Storage】--RAID类型
- 【推荐】如何删除windows服务
- dns设置服务器版本信息,DNS设置方法
- 服务器硬盘如何验收,系列服务器及存储测试安装验收报告.doc
- linux内核2.6.35编译过程
- HTML作业-花店网页商城
- 从零实现SpringBoot简易读写分离,也不难嘛!
- 1 Hello World,JavaFX Style
- SQL2005的SSMS连接SQL2012会有问题
- Kafka实战之整合Flume和Kafka完成实时数据采集
- Shiro教程及案例
- 种草功能在电商app源码中发挥的作用和价值
- 博士申请 | 新加坡科技设计大学段凌杰教授招收人工智能全奖博士生
- 传智播客对大学的期许
- 关于netty的@Sharable注解含义,你可bie瞎说了
- 医疗讲座直播运营方案怎么做
- Python爬取安居客经纪人信息