手写网站服务器~用Python手动实现一个简单的服务器,不借助任何框架在浏览器中输出任意内容

网友投稿 300 2022-11-19

手写网站服务器~用Python手动实现一个简单的服务器,不借助任何框架在浏览器中输出任意内容

前言

在公司网站开发中,我们往往借助于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/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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于液晶模块HT1621的液晶显示系统设计
下一篇:什么是rs422?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~