手写网站服务器~用Python手动实现一个简单的服务器,不借助任何框架在浏览器中输出任意内容
2022/4/20 1:14:26
本文主要是介绍手写网站服务器~用Python手动实现一个简单的服务器,不借助任何框架在浏览器中输出任意内容,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
写在前面的一些P话:
在公司网站开发中,我们往往借助于Flask、Django等网站开发框架去提高网站开发效率。那么在面试后端开发工程师的时候,面试官可能就会问到网站开发的底层原理是什么?
我们不止仅仅会使用框架开发,还需要知其所以然
今天领大家不借助任何框架的基础上手动搭建一个资料查找网站
点击此处找管理员免费领取资料
主要内容
- TCP网络模型
- 正则表达式匹配资源
- 如何编写一个tcp server服务端
开始我们的代码,先是导入模块
如何实现一个静态的服务器呢? 可以使用Python自带的一个通讯模型:socket
python中内置的网络模型库tcp / udp
import socket
为浏览器发送数据的函数
1. 当浏览器链接到网站服务器的时候
def service_client(new_socket): request = new_socket.recv(1024) print(request)
2. 向浏览器发送http数据
如果浏览器在接收完http协议数据之后遇到了换行,自动将下面的数据转成网站内容body中去
response = 'HTTP/1.1 200 OK \r\n' response += '\r\n' # 构建你想要显示的数据内容 response += 'hello world'
3. 浏览器接受到的数据是由编码集的,所以我们需要对字符串进行一次编码
new_socket.send(response.encode('utf-8'))
4. 当服务完浏览器之后,需要释放系统资源
new_socket.close()
创建一个执行函数
1. 创建一个tcp套接字
socket模块需要两个参数 网络协议(pc ipv4 ipv6) 模型类型
def main(): tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
我们操作系统内部有65535个服务端口,当一个程序运行的时候[进程] 占用一个端口
浏览器软件运行占用的端口:80
文件上传端口:22
网站指定端口:443
端口是有限的,当程序完成任务之后一定要释放端口 刷新资源
2. 当网站服务中断时 需要立即释放端口
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
3.绑定本机信息
tcp_server_socket.bind(('', 80))
通过浏览器去访问网站资源 [数据 html css JavaScript 静态文件(图片 音频)]
需要让浏览器首先能找到这台电脑 ip 才可以访问这台电脑的数据资源
需要绑定电脑的ip地址
4.将网站服务设置成监听模式
等待浏览器链接
tcp_server_socket.listen(128)
网站服务
while True: ''' new_socket 负责向浏览器发送数据的 client_addr 记录当前链接电脑的信息(ip port) ''' new_socket, client_addr = tcp_server_socket.accept() service_client(new_socket) # 使用new_socket向浏览器发送数据
启动程序
if __name__ == "__main__": main()
运行代码
出现乱码,可以把utf-8改为GBK
这篇关于手写网站服务器~用Python手动实现一个简单的服务器,不借助任何框架在浏览器中输出任意内容的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南