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

这篇具有很好参考价值的文章主要介绍了用Python手动实现一个简单的服务器,不借助任何框架在浏览器中输出任意内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

python 简单服务器,python,python,服务器,开发语言

在公司网站开发中,我们往往借助于Flask、Django等网站开发框架去提高网站开发效率。

那么在面试后端开发工程师的时候,面试官可能就会问到网站开发的底层原理是什么?

python 简单服务器,python,python,服务器,开发语言

我们不止仅仅会使用框架开发,还需要知其所以然

今天领大家不借助任何框架的基础上手动搭建一个资料查找网站

主要内容

  1. TCP网络模型

  2. 正则表达式匹配资源

  3. 如何编写一个tcp server服务端

python资料、源码、教程\福利皆: 点击此处跳转文末名片获取

开始我们的代码,先是导入模块

如何实现一个静态的服务器呢? 可以使用Python自带的一个通讯模型:socket

python中内置的网络模型库 tcp / udp

import socket

为浏览器发送数据的函数

  1. 当浏览器链接到网站服务器的时候
def service_client(new_socket):
    request = new_socket.recv(1024)
    print(request)
  1. 向浏览器发送http数据

如果浏览器在接收完http协议数据之后遇到了换行,自动将下面的数据转成网站内容body中去

response = 'HTTP/1.1 200 OK \r\n'
response += '\r\n'
# 构建你想要显示的数据内容
response += 'hello world'
  1. 浏览器接受到的数据是由编码集的,所以我们需要对字符串进行一次编码
 new_socket.send(response.encode('utf-8'))
  1. 当服务完浏览器之后,需要释放系统资源
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

端口是有限的,当程序完成任务之后一定要释放端口 刷新资源

  1. 当网站服务中断时 需要立即释放端口
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  1. 绑定本机信息
tcp_server_socket.bind(('', 80))

通过浏览器去访问网站资源 [数据 html css JavaScript 静态文件(图片 音频)]

需要让浏览器首先能找到这台电脑 ip 才可以访问这台电脑的数据资源

需要绑定电脑的ip地址

  1. 将网站服务设置成监听模式

等待浏览器链接

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()

运行代码

python 简单服务器,python,python,服务器,开发语言

出现乱码,可以把utf-8改为GBK

python 简单服务器,python,python,服务器,开发语言

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

python 简单服务器,python,python,服务器,开发语言

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇文章来源地址https://www.toymoban.com/news/detail-551350.html

到了这里,关于用Python手动实现一个简单的服务器,不借助任何框架在浏览器中输出任意内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python实现搭建-简单服务器教程

    Python动态服务器网页(需要使用WSGI接口),基本实现步骤如下: 1.等待客户端的链接,服务器会收到一个http协议的请求数据报 2.利用正则表达式对这个请求数据报进行解析(请求方式、提取出文件的环境) 3.提取出文件的环境之后,利用截断取片的方法将文件名转化为模块

    2023年04月18日
    浏览(24)
  • 用Java包com.sun.net.httpserver下面的类实现一个简单的http服务器demo

    java的com.sun.net.httpserver包下的类提供了一个高层级的http服务器API,可以用来构建内嵌的http服务器。支持http和https。这些API提供了一个RFC 2616 (HTTP 1.1)和RFC 2818 (HTTP over TLS)的部分实现。 https://docs.oracle.com/en/java/javase/19/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html 下面来实

    2024年02月07日
    浏览(29)
  • 用Rust设计一个并发的Web服务:常用Rust库如Tokio、Hyper等,基于TCP/IP协议栈,实现了一个简单的并发Web服务器,并结合具体的代码讲解如何编写并发Web服务器的程序

    作者:禅与计算机程序设计艺术 1994年,互联网泡沫破裂,一批优秀的程序员、工程师纷纷加入到web开发领域。而其中的Rust语言却备受瞩目,它是一种现代系统编程语言,专注于安全和并发。因此,Rust在当下成为最流行的编程语言之一,很多框架也开始使用Rust重构,这使得

    2024年02月06日
    浏览(41)
  • 一步步带你实现一个简单的express服务器,能让vue通过axios请求将图片上传到阿里云OSS

    上篇文章提到了如何用mock.js来模拟接口,方便在后端没有写好接口的时候也能顺利开发,本来计划这篇文章是讲一下用轮播图组件swiper来展示一下模拟接收到的数据和图片,但项目计划发生了变化,这个就推到后面再说。 mock模拟接口虽然很好用,但是在项目开发的时候还是

    2024年02月04日
    浏览(40)
  • 一个简单的DNS服务器

    DNS数据包的格式如下: 头部:会话标识ID,用于标识报文的ID标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答报文是哪个请求的响应。 正文: Queries区域 查询名QNAME:要查找的名字,是一个或多个标识符的序列。 查询类型QTYPE:每一个问

    2024年02月09日
    浏览(34)
  • python套接字(二):实现一个服务器和多客户端连接

    在上一篇博客python套接字(一):socket的使用简单说明了一下套接字的使用,也实现了使用套接字来传输消息,但是也有一个问题,就是这种实现方式只能一个服务器连接一个客户端,意味着有几个个客户就要创建结果服务器,而且客户端直接还不能通信,这样就和现实生活中

    2024年02月14日
    浏览(33)
  • 从零开始搭建游戏服务器 第一节 创建一个简单的服务器架构

    由于现在java web太卷了,所以各位同行可以考虑换一个赛道,做游戏还是很开心的。 本篇教程给新人用于学习游戏服务器的基本知识,给新人们一些学习方向,有什么错误的地方欢迎各位同行进行讨论。 本篇教程预计使用Java+Redis+Mongo 本着先完成再完美的原则,从最简单的

    2024年02月10日
    浏览(40)
  • 【10秒开服】幻兽帕鲁全自动部署教程,难道你还想手动搭建游戏服务器吗?快来学习这个简单又快速的方法!

    在帕鲁的世界,你可以选择与神奇的生物「帕鲁」一同享受悠闲的生活,也可以投身于与偷猎者进行生死搏斗的冒险。帕鲁可以进行战斗、繁殖、协助你做农活,也可以为你在工厂工作。你也可以将它们进行售卖,或肢解后食用。 引用自:https://store.steampowered.com/app/1623730/P

    2024年02月19日
    浏览(30)
  • 使用nginx简单搭建一个ChatGPT代理服务器

    作者:ChenZhen 本人不常看CSDN消息,有问题通过下面的方式联系: 邮箱:1583296383@qq.com vx: ChenZhen_7 我的个人博客地址:https://www.chenzhen.space/🌐 版权:本文为博主的原创文章,本文版权归作者所有,转载请附上原文出处链接及本声明。📝 如果对你有帮助,请给一个小小的sta

    2024年02月06日
    浏览(32)
  • C语言-写一个简单的Web服务器(三)

    上次我们研究了如何将解析web前端的请求,本次内容里我们将服务器的内容响应到前端,让浏览器展示。 服务器将数据响应到前端有其必要的返回数据,其结构如下,中间rn为换行,这个在不同系统(window,linux)不同,暂时将其作为一种固定格式。 在这里插入代码片 “

    2024年03月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包