Web服务器python编程
一、Web服务器代码
'''
* 功能:Web浏览器访问 Web服务器,获取 index.html 文件
* 目的:1、当一个客户(浏览器)联系时创建一个套接字
* 2、从这个连接接收 HTTP 请求
* 3、解释该请求以确定所请求的特定文件
* 4、从服务器的文件系统获得请求的文件
* 5、创建一个由请求文件组成的 HTTP 响应的报文,报文前面有首部行
* 6、经TCP连接向请求的浏览器发送响应。如果请求文件不在服务器中,返回 “404 Not Found”
'''
from socket import * #引用套接字
import os #引用文件管理
serverHost = '127.0.0.1' #Web服务器IP地址
serverPort = 12000 #服务端的端口号'''
* 函数功能:解释 HTTP 请求报文
* 返回值: 请求的文件名
'''
def HTTPExplain(Message):Data = Message.decode() #解码报文print(Data) #打印报文Lines = Data.split("\r\n") #通过指定分隔符对字符串切片Url = Lines[0].split(" ") #得到 URL [GET /index.html HTTP/1.1]FileName = Url[1].split('/')[1] #得到 ['index.html']print(FileName) #打印请求文件名return FileName'''
* 函数功能:构造 HTTP 响应报文
* 返回值: 响应报文
'''
def GetFile(FileName):path = "WebServer\\" + FileName #文件路径if FileName in os.listdir("WebServer"): #判断文件是否存在with open(path,'r',encoding="utf-8") as fp: #打开文件data = fp.read() #读取文件HttpResponse = "HTTP/1.1 200 OK\r\n\r\n" + data #请求文件携带请求成功首部else:HttpResponse = "HTTP/1.1 404 \r\n\r\n<h1>404 Not Found</h1>" #请求失败报文return HttpResponse.encode()#握手套接字
serverSocket = socket(AF_INET,SOCK_STREAM) #创建一个握手套接字
serverSocket.bind((serverHost,serverPort)) #绑定地址(host,port)到握手套接字
serverSocket.listen(1) #请求连接的最大数
print('The server is ready,Port is ',serverPort) #提示服务器准备就绪
#创建连接套接字
connectSocket,addr = serverSocket.accept() #被动接受TCP客户端连接,创建连接套接字
Message = connectSocket.recv(1024) #接收TCP数据,数据以字符串形式返回
FileName = HTTPExplain(Message) #调用函数获取请求文件
#连接套接字
ResponseMessage = GetFile(FileName) #调用函数构造响应报文
connectSocket.sendall(ResponseMessage) #完全发送响应报文
connectSocket.close() #关闭连接套接字
二、请求文件
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>标题使用</title>
</head>
<body><h1>一级标题</h1><h2>二级标题</h2><h3>三级标题</h3><h4>四级标题</h4><h5>五级标题</h5><h6>六级标题</h6>
</body>
</html>
三、文件路径
我把服务器文件 WebServer.py 和请求文件 index.html 放在了 WebServer 文件夹里,下列两行代码就是确定路径,然后判断文件是否存在。
path = "WebServer\\" + FileName #文件路径
if FileName in os.listdir("WebServer"): #判断文件是否存在
注意:path = "WebServer\\" + FileName #文件路径 这一句为了兼容 windows 系统,在 Linux 系统中不用这一句,可以直接寻找文件
四、Web浏览器访问
如图:输入127.0.0.1:12000/index.html
Host:127.0.0.1
Port:12000
请求文件:index.htnl
Web服务器python编程相关推荐
- web服务器python_一个简单的web服务器(python)
今天用python写一个简单的web服务器代码网上都有只是为了方便大家学习做了一个简单的教程 第一首先我们来一张架构以及运行过程的流程图 本文学习仅供参考,需要更多资料可以加群:496257369 简 ...
- 利用python自带的包可以建立简单的web服务器
2019独角兽企业重金招聘Python工程师标准>>> ##一个命令建立一个简单web服务器 python -m SimpleHTTPServer port 例如:python -m ...
- python开发web服务器——搭建简易网站
转自:http://blog.csdn.net/baidu_35085676/article/details/69807145?%3E 目标 用已有的丰富图片资源建一个看图网站 条件 开发语言: py ...
- 应用程序服务器和Web服务器之间有什么区别?
应用程序服务器和Web服务器之间有什么区别? #1楼 最大的不同是Web服务器处理HTTP请求,而应用程序服务器将在任意数量的协议上执行业务逻辑. #2楼 这取决于特定的体系结构. 某些应用程序服务器 ...
- python写web难受-python写web
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 你难道想只凭 python 脚本,就做一个 web 应用出来? 还真别说,最近, ...
- TCP与Web服务器
TCP通信与Web服务器 TCP与Web服务器 Python实现套接字编程 实验准备 服务器端程序 客户机端程序 运行程序步骤 测试运行结果 服务器端优化 缺陷 实验准备 服务器优化前程序运行结果 服 ...
- python: 网络编程及fastapi快速搭建web服务器
一.网络编程 1.网络编程三要素 ip地址.端口.TCP协议 ip地址 ip地址作用: 根据ip地址能够找到网络中的具体设备(电脑,打印机) ip地址概念: ip地址是网络设备的唯一标识 ip地址分类 ...
- 利用python编写设计多线程web服务器(计算机网络_自顶向下第六版_第二章1和4的编程作业)
今天翻看自己以前的博客时,发现了这则博客,距今大约也有一年多的时间了,觉得还是蛮有趣的一个作业,于是跟着博客又做了一遍,觉得之前的排版有点不大好,所以此番用markdown 稍微重做些修改更新一下博客 ...
- python web开发 网络编程 HTTP协议、Web服务器、WSGI接口
文章目录 1. HTTP协议 2. Web服务器 3. 静态服务器 创建 web_server.py 4. WSGI 接口 4.1 CGI 通用网关接口 4.2 WSGI 4.3 定义 WSGI 接口 ...
最新文章
- 解决:angularjs radio默认选中失效问题
- linux文件类型为ext4怎么扩展,如何扩展ext4分区和文件系统?
- Digital Imaging Processing 数字图像处理
- 数模学习笔记——微分方程(传染病模型)
- Android JNI原理分析
- Kafka科普系列 | 什么是LSO?
- oracle hr样本模式,Oracle 样本模式 HR
- 协程(Coroutine)与多线程,多进程
- 张近东发致家乐福中国员工内部信:唯有坚持、坚守才能取得更大的成功
- android数据存放map_Android存储数据到本地文件
- xcode6以后, 使用.pch
- ArcMap数据处理
- Oracle将监听服务注册到集群中,110 ORACLE实例配置多个监听器
- Windows 10 的触摸板手势
- python 行列转换_行列转换的Mysql,Excel,Python解法
- HTTP代理是什么意思?
- 你知道了区块链,现在该了解DCEP央行数字货币了
- 齐向东:云计算时代的网络安全更重要
- Apache 防止恶意解析
- unity photon中技能效果网络同步
热门文章
- C# .NET实现手机接收短信
- HTML基础知识点总结
- 中联通首次确定3G上网资费 限流量包月150元
- Apple Watch 关闭显示正在听的音乐
- Python之私有属性和私有方法
- 成功解决问题h5py\h5r.pyx, line 145, in init h5py.h5r AttributeError: type object 'h5py.h5r.Reference' ha
- lopatkin俄大神精简Windows 10 Pro 18363.1049 19H2 Release x86-x64 ZH-CN DREY[2020-08-30]
- 利用VPS服务器搭建一个FRP内网穿透服务和Web服务穿透
- 模电学习笔记(上交郑老师)25.深度负反馈放大电路分析
- VS2015默认不支持x64下__asm{}内联汇编的解决方案(含资源共享)