前言
嗨喽~大家好呀,这里是魔王呐 ❤ ~!
在公司网站开发中,我们往往借助于Flask、Django等网站开发框架去提高网站开发效率。
那么在面试后端开发工程师的时候,面试官可能就会问到网站开发的底层原理是什么?
我们不止仅仅会使用框架开发,还需要知其所以然
今天领大家不借助任何框架的基础上手动搭建一个资料查找网站
主要内容
-
TCP网络模型
-
正则表达式匹配资源
-
如何编写一个tcp server服务端
开始我们的代码,先是导入模块
如何实现一个静态的服务器呢? 可以使用Python自带的一个通讯模型:socket
python中内置的网络模型库 tcp / udp
import socket
为浏览器发送数据的函数
- 当浏览器链接到网站服务器的时候
def service_client(new_socket):
request = new_socket.recv(1024)
print(request)
- 向浏览器发送http数据
如果浏览器在接收完http协议数据之后遇到了换行,自动将下面的数据转成网站内容body中去
response = 'HTTP/1.1 200 OK \r\n'
response += '\r\n'
# 构建你想要显示的数据内容
response += 'hello world'
- 浏览器接受到的数据是由编码集的,所以我们需要对字符串进行一次编码
new_socket.send(response.encode('utf-8'))
- 当服务完浏览器之后,需要释放系统资源
new_socket.close()
创建一个执行函数
- 创建一个tcp套接字
socket模块需要两个参数 网络协议(pc ipv4 ipv6) 模型类型
def main():
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- 当网站服务中断时 需要立即释放端口
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- 绑定本机信息
tcp_server_socket.bind(('', 80))
- 将网站服务设置成监听模式
等待浏览器链接
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
尾语
感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。
最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇