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 接口 ...
最新文章
- linux获取最高权限并取消_Linux 更新glibc 漏洞 可以获取最高权限
- 比杠精网友更可怕的,是懂王同事
- java编写学生管理系统_Java实现学生管理系统
- 算法练习day12——190331(并查集)
- java复习2(编码)
- struct stat结构体简介
- Date、String、Calendar类型之间的转化
- 关于Linux内核的一些问题
- 设计模式—工厂模式(思维导图)
- 【渝粤教育】国家开放大学2018年春季 0266-21T设计构成 参考试题
- 简单工厂模式和策略模式的区别
- 关于GIS中Scale和Resolution的那些事儿
- 5-(4-硝基苯基)-10,15,20-三苯基卟啉NTPPH2/NTPPZn/NTPPMn/NTPPFe/NTPPNi/NTPPCu/NTPPCd/NTPPCo等金属配合物
- oracle归档切换,oracle 切换归档方式
- 【贪心】兔警官朱迪买礼物
- DICOM:Transfer Syntax传输语义之奇葩GE Private TS
- 系统移植-(二)u-boot:启动过程做的工作(汇编阶段、C阶段)
- 相机选型与远心镜头选型
- 电子元件行业ERP经典客户案例(电陶)
- 安卓手机合并内存卡到内置存储