一、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编程相关推荐

  1. web服务器python_一个简单的web服务器(python)

    今天用python写一个简单的web服务器代码网上都有只是为了方便大家学习做了一个简单的教程 第一首先我们来一张架构以及运行过程的流程图 本文学习仅供参考,需要更多资料可以加群:496257369 简 ...

  2. 利用python自带的包可以建立简单的web服务器

    2019独角兽企业重金招聘Python工程师标准>>> ##一个命令建立一个简单web服务器 python -m SimpleHTTPServer port 例如:python -m ...

  3. python开发web服务器——搭建简易网站

    转自:http://blog.csdn.net/baidu_35085676/article/details/69807145?%3E 目标 用已有的丰富图片资源建一个看图网站 条件 开发语言: py ...

  4. 应用程序服务器和Web服务器之间有什么区别?

    应用程序服务器和Web服务器之间有什么区别? #1楼 最大的不同是Web服务器处理HTTP请求,而应用程序服务器将在任意数量的协议上执行业务逻辑. #2楼 这取决于特定的体系结构. 某些应用程序服务器 ...

  5. python写web难受-python写web

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 你难道想只凭 python 脚本,就做一个 web 应用出来? 还真别说,最近, ...

  6. TCP与Web服务器

    TCP通信与Web服务器 TCP与Web服务器 Python实现套接字编程 实验准备 服务器端程序 客户机端程序 运行程序步骤 测试运行结果 服务器端优化 缺陷 实验准备 服务器优化前程序运行结果 服 ...

  7. python: 网络编程及fastapi快速搭建web服务器

    一.网络编程 1.网络编程三要素 ip地址.端口.TCP协议 ip地址 ip地址作用: 根据ip地址能够找到网络中的具体设备(电脑,打印机) ip地址概念: ip地址是网络设备的唯一标识 ip地址分类 ...

  8. 利用python编写设计多线程web服务器(计算机网络_自顶向下第六版_第二章1和4的编程作业)

    今天翻看自己以前的博客时,发现了这则博客,距今大约也有一年多的时间了,觉得还是蛮有趣的一个作业,于是跟着博客又做了一遍,觉得之前的排版有点不大好,所以此番用markdown 稍微重做些修改更新一下博客 ...

  9. python web开发 网络编程 HTTP协议、Web服务器、WSGI接口

    文章目录 1. HTTP协议 2. Web服务器 3. 静态服务器 创建 web_server.py 4. WSGI 接口 4.1 CGI 通用网关接口 4.2 WSGI 4.3 定义 WSGI 接口 ...

最新文章

  1. 解决:angularjs radio默认选中失效问题
  2. linux文件类型为ext4怎么扩展,如何扩展ext4分区和文件系统?
  3. Digital Imaging Processing 数字图像处理
  4. 数模学习笔记——微分方程(传染病模型)
  5. Android JNI原理分析
  6. Kafka科普系列 | 什么是LSO?
  7. oracle hr样本模式,Oracle 样本模式 HR
  8. 协程(Coroutine)与多线程,多进程
  9. 张近东发致家乐福中国员工内部信:唯有坚持、坚守才能取得更大的成功
  10. android数据存放map_Android存储数据到本地文件
  11. xcode6以后, 使用.pch
  12. ArcMap数据处理
  13. Oracle将监听服务注册到集群中,110 ORACLE实例配置多个监听器
  14. Windows 10 的触摸板手势
  15. python 行列转换_行列转换的Mysql,Excel,Python解法
  16. HTTP代理是什么意思?
  17. 你知道了区块链,现在该了解DCEP央行数字货币了
  18. 齐向东:云计算时代的网络安全更重要
  19. Apache 防止恶意解析
  20. unity photon中技能效果网络同步

热门文章

  1. C# .NET实现手机接收短信
  2. HTML基础知识点总结
  3. 中联通首次确定3G上网资费 限流量包月150元
  4. Apple Watch 关闭显示正在听的音乐
  5. Python之私有属性和私有方法
  6. 成功解决问题h5py\h5r.pyx, line 145, in init h5py.h5r AttributeError: type object 'h5py.h5r.Reference' ha
  7. lopatkin俄大神精简Windows 10 Pro 18363.1049 19H2 Release x86-x64 ZH-CN DREY[2020-08-30]
  8. 利用VPS服务器搭建一个FRP内网穿透服务和Web服务穿透
  9. 模电学习笔记(上交郑老师)25.深度负反馈放大电路分析
  10. VS2015默认不支持x64下__asm{}内联汇编的解决方案(含资源共享)