静态Web服务器-返回固定页面数据

2023-10-27

学习目标

  • 能够写出组装固定页面数据的响应报文

1. 开发自己的静态Web服务器

实现步骤:

  1. 编写一个TCP服务端程序
  2. 获取浏览器发送的http请求报文数据
  3. 读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。
  4. HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。

2. 静态Web服务器-返回固定页面数据的示例代码

import socket


if __name__ == '__main__':
    # 创建tcp服务端套接字
    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 设置端口号复用, 程序退出端口立即释放
    tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    # 绑定端口号
    tcp_server_socket.bind(("", 9000))
    # 设置监听
    tcp_server_socket.listen(128)
    while True:
        # 等待接受客户端的连接请求
        new_socket, ip_port = tcp_server_socket.accept()
        # 代码执行到此,说明连接建立成功
        recv_client_data = new_socket.recv(4096)
        # 对二进制数据进行解码
        recv_client_content = recv_client_data.decode("utf-8")
        print(recv_client_content)

        with open("static/index.html", "rb") as file:
            # 读取文件数据
            file_data = file.read()


        # 响应行
        response_line = "HTTP/1.1 200 OK\r\n"
        # 响应头
        response_header = "Server: PWS1.0\r\n"

        # 响应体
        response_body = file_data

        # 拼接响应报文
        response_data = (response_line + response_header + "\r\n").encode("utf-8") + response_body
        # 发送数据
        new_socket.send(response_data)

        # 关闭服务与客户端的套接字
        new_socket.close()

3. 小结

  1. 编写一个TCP服务端程序

    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 循环接受客户端的连接请求
    while True:
        conn_socket, ip_port = tcp_server_socket.accept()
    
  2. 获取浏览器发送的http请求报文数据

    client_request_data = conn_socket.recv(4096)
    
  3. 读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。

    response_data = (response_line + response_header + "\r\n").encode("utf-8") + response_body
    conn_socket.send(response_data)
    
  4. HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。

    conn_socket.close()

 


Python零基础笔记汇总:

Python解释器详解

注释作用及分类 运算符总结 定义变量与数据类型
if判断与循环总结 理解面向对象 集合操作方法 列表的常用操作
Python异常 元组应用及操作

Python爬虫笔记篇(含项目实战案例):

代理池概述及开发环境 代理池的设计 实现代理池思路 定义代理IP的数据模型类
实现代理池工具模块 实现代理池的校验模块 实现代理池的数据库模块 实现代理池的爬虫模块
实现代理池的检测模块

实现代理池的API模块

Bilibili模拟登陆(滑动验证码)

Python Web篇笔记(更新中……):

Part 01—Linux基础命令
操作系统与虚拟机软件 了解Ubuntu操作系统 Linux查看、切换目录命令 绝对路径和相对路径
 创建、删除、复制、移动文件及目录命令  ls命令选项 mkdir和rm命令选项  cp和mv命令选项
Part 02—Linux高级命令
重定向命令 查看文件内容命令、链接命令 文本搜索命令 查找文件命令
压缩和解压缩命令 文件权限命令 获取管理员权限的相关命令 用户相关操作
用户组相关操作 远程登录、远程拷贝命令
静态Web服务器
搭建Python自带静态Web服务器

2022年Python+大数据学习路线图,源码笔记,最优学习资源_黑马程序员官方的博客-CSDN博客任何学习过程都需要一个科学合理的学习路线,才能够有条不紊的完成我们的学习目标。Python+大数据所需学习的内容纷繁复杂,难度较大,所以今天特别为大家整理了一个全面的Python+大数据学习路线图,帮大家理清思路,攻破难关!文章目录前言第一阶段 大数据开发入门1.大数据数据开发基础MySQL8.0从入门到精通第二阶段 大数据核心基础2022版大数据Hadoop入门教程第三阶段 千亿级数仓技术数据离线数据仓库,企业级在线教育项目实战(Hive数仓项目完整流程)第四阶段 PB内存计算1.pythohttps://blog.csdn.net/itcast_cn/article/details/1223065522022年人工智能学习路线图,清楚明确_黑马程序员官方的博客-CSDN博客_人工智能学习路线图众所周知,人工智能时代已经融入到我们的生活的当中,不论是图像识别还是语音识别的相关产品已经开始落地,就连国家都将人工智能设为了国家战略级发展规划,人工智能开发将会是是未来技术研究的前沿。下面特别给大家整理了人工智能的学习路线,希望大家都能有清楚的学习方向。文章目录第一阶段 人工智能开发入门1. 人工智能之python编程零基础入门2、4天快速入门Python数据挖掘第二阶段 机器学习核心技术第三阶段 NLP自然语言处理技术第四阶段 CV计算机视觉技术1.AI-OpenCV图像处理10小时零基础入门2https://blog.csdn.net/itcast_cn/article/details/122882407

详情大家可以关注Python专栏,努力为大家更新更多好内容 ↑ ↑ ↑ 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态Web服务器-返回固定页面数据 的相关文章

  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • 【信道估计】【MIMO】【FBMC】未来移动通信的滤波器组多载波调制方案(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • 如何使用Imagewheel搭建一个简单的的私人图床无公网ip也能访问

    文章目录 1 前言 2 Imagewheel网站搭建 2 1 Imagewheel下载和安装 2 2 Imagewheel网页测试 2 3 cpolar的安装和注册 3 本地网页发布 3 1 Cpolar临时数据隧道
  • 【网安神器篇】——WPScan漏洞扫描工具

    目录 一 Wordpress简介 二 WPScan介绍 三 安装 四 获取token 1 注册账号 2 拿到token 五 使用教程 1 常用选项 2 组合命令 1 模糊扫描 2 指定扫描用户 3 插件漏洞扫描 4 主题漏洞扫描 5 Tim
  • Vue3 和Vue2的区别,以及钩子函数的使用

    Vue js 3 和 Vue js 2 是两个主要版本的流行前端框架 它们之间有很多区别 包括性能优化 新特性和改进的API等 以下是一些Vue 3与Vue 2之间的主要区别 以及一些示例代码来说明这些差异 1 性能优化 响应式系统 Vue
  • 低代码配置-列表页组件设计

    保存 表单属性存放 bill 筛选项配置存放 filterLayout 列表按钮存放 buttonLayout 列表布局存放 listLayout api存放 api 数据结构 layout 存放表单基础配置 bill 存放按钮基础配置 b
  • 课设:NFA确定化和最小化程序的设计与实现(html+css+js实现)

    文章目录 问题描述 待解决问题 1 如何存储NFA或者是DFA 2 NFA多初态问题 3 子集化过程思路 4 分割法过程思路 使用方法 下载链接 问题描述
  • vue实现 marquee(走马灯)

    样式 代码 div class marquee prompt div class list prompt span class prompt item span div div data return listPrompt xxx xxxx
  • 服务器VPS是什么意思?一文了解其含义与重要性

    在今天的数字时代 服务器扮演着至关重要的角色 它们是网站 应用程序和在线业务的基石 但是 你是否听说过VPS 本文将深入探讨什么是服务器VPS 以及为什么它在今天的互联网世界中如此重要 什么是服务器VPS 服务器的基本概念 在我们深入探讨V
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • Vue中下载不同文件常用的方式

    1 使用window open方法下载文件
  • 光波导结构

    摘要 增强现实和混合现实 AR MR 领域的新应用引起了人们对带有光栅区域的光波导系统的越来越多的关注 这些光波导系统用于输入和输出耦合以及扩瞳目的 VirtualLab Fusion为这类系统的仿真和设计提供了几个强大的工具 其中一个是具
  • 2023下半年软考「单独划线」合格标准公布

    中国计算机技术职业资格网发布了 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告 2023下半年软考单独划线地区合格标准各科目均为42分 01 官方通告 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告
  • 网工内推 | 上市公司同程、科达,五险一金,年终奖,最高12k*15薪

    01 同程旅行 招聘岗位 网络工程师 职责描述 1 负责职场 门店网络规划 建设 维护 2 负责网络安全及访问控制 上网行为管理和VPN设备的日常运维 3 负责内部相关网络自动化和系统化建设 4 优化与提升网络运行质量 制定应急预案 人员培
  • 【安全】网络安全态势感知

    文章目录 一 态势感知简介 1 概念 2 形象举例 3 应具备的能力 二 为什么要态势感知 为什么网络安全态势感知很重要 三 态势感知系统的功能 四 如何评估态势感知的建设结果 五 什么是态势感知的三个层级 四 业界的态势感知产品 1 安全
  • 如何在 Python 脚本中使用 Google OAuth2

    在使用 Python 脚本将视频上传到 YouTube 频道时 若希望将视频上传到第二个频道 需要解决 OAuth2 授权的问题 解决方案 创建新的 Google Cloud 项目 from google oauth2 import ser
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学

随机推荐

  • 计算机磁盘序列号是唯一的吗,磁盘id和硬盘序列号一样吗

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 磁盘ID和硬盘序列号不是一回事 1 硬盘ID是硬盘的密码 2 磁盘序号 在磁盘管理页面显示的磁盘0 1 2等 0 1 2即磁盘序号 硬盘是电脑主要的存储媒介之一 由一个或者
  • Flink SQL 1.11新功能详解:Hive 数仓实时化 & Flink SQL + CDC 实践

    问题导读1 Flink 1 11 有哪些新功能 2 如何使用 flink cdc connectors 捕获 MySQL 和 Postgres 的数据变更 3 怎样利用 Flink SQL 做多流 join 后实时同步到 Elasticse
  • Vue+Element-ui+SpringBoot搭建后端汽车租赁管理系统

    最近在做项目 花了一周的时间搭建了一个十分完备的汽车租赁后端管理系统 页面采用纯Vue2 Element ui搭建 后端采用Springboot Mybatis搭建 数据库采用Mysql 包括了登录验证 根据不同权限进入不同界面 数据增删改
  • Qt标准对话框

    标准对话框 新建桌面应用程序 项目名testStandardDialogs 类名Dialog 基类QDialog 不勾选创建界面文件 1 文件 颜色 字体 对话框 dialog h ifndef DIALOG H define DIALOG
  • java -version 时出现 could not open D:\java\lib\i386\jvm.cfg是什么意思

    简单分几步 删除之前的jdk 删除注册表中相关项 重新安装 注意安装路径不要改变 跟之前可以用的时候一样 配置环境变量 应该是文件缺失导致的问题 JDK在安装的过程当中将会生成如下3个项目 HKEY LOCAL MACHINE SOFTWA
  • what引导的宾语从句

    what引导宾语从句时在从句中作主语 宾语或表语 表示 所 的 1 表示 的东西或事情 相当于 the thing that all that everything that They ve done what they can to he
  • wifi一键配网smartconfig原理及应用

    https blog csdn net flyingcys article details 49283273 智能家居 家电现阶段还处于普及阶段 由于家庭wifi网络的普及 目前普遍采用wifi与路由器完成连接 与手机 云端进行数据交互 智
  • 数据结构与算法 -- 子序列问题

    一 子序列问题 子数组问题是连续的 而子序列问题是不连续的 比如说字符串 I wanna keep a giraffe in my backyard 的一种子序列就可以是 Igbackd 子序列不再要求答案是一个连续的串 一个字符串的子序列
  • 第58步 深度学习图像识别:Transformer可视化(Pytorch)

    一 写在前面 1 pytorch grad cam库 这一期补上基于基于Transformer框架可视化的教程和代码 使用的是pytorch grad cam库 以Bottleneck Transformer模型为例 2 算法分类 pyto
  • Julia概率分布和统计推理

    贷款审批预测数据示例 贝叶斯理论 P Y X P X P XY P X Y P Y 如果 X 是我们的数据 也称为证据 Y 是我们的模型假设 则 P Y 是我们看到任何证据之前的概率 称为先验概率 在实践中 我们通常假设服从均匀分布或正态分
  • 恢复硬盘U盘数据好帮手-finaldata

    FinalData可以很容易地从格式化后的文件和被病毒破坏的文件恢复 甚至在极端的情况下 如果目录结构被部分破坏也可以恢复 只要数据仍然保存在硬盘上 点击下载finaldata企业版
  • 数字图像处理笔记(十):形态学图像处理

    1 引言 数学形态学的语言是集合论 利用集合论知识我们可以实现图像 腐蚀 膨胀 开操作 笔操作 下面就让我们学习一下这些基于形态学的图像处理 2 腐蚀和膨胀 膨胀与腐蚀能实现多种多样的功能 主要如下 消除噪声 分割 isolate 出独立的
  • linux对一个文件夹中的所有文件重命名

    在Linux中 你可以使用mv命令对一个文件夹下的所有文件进行重命名 下面是几种常见的用法 方法1 批量添加前缀或后缀 cd 目标文件夹路径 for file in do mv file 前缀 file done 添加前缀 for file
  • python绘制风向玫瑰图

    一 风向 流向角度和数学角关系 1 数学角和风向角相互转换 数学角向东为0 按照逆时针旋转 北风为0 即指向南为0 顺时针增加 数学角转风向角 1 根据u v获得数学角 2 根据数学角换算风向 360 360是对360取余 数学角向东为0
  • Python核心编程——第4章 多线程编程 笔记

    Python核心编程 第4章 多线程编程 笔记 引言 通用概念 python相关概念 多线程的实现方式 两大模块 三种替代方案 使用Thread类主要的三种创建线程的方法 相关模块 代码实现部分 python3 最简单的线程 定时等待 使用
  • Kubernetes踩坑(一): 部署问题记录

    一 etcd服务启动后报错etcd cluster ID mismatch 检车service配置cluster选项有无问题 若无问题 则可能是此前的etcd bootstrap加速启动缓存残留导致 坑爹的是rm rf var lib et
  • MyBatis中的reflection包(一)ObjectFactory,PropertyTokenizer, Invoker, Reflector

    内容概要 reflection是MyBatis关于反射的工具包 是实现其它功能的基石之一 这里我不准备贴上源码然而逐行解释 而是从需求分析的角度来复现 ObjectFactory 现在有这样的需求 给你一个Class对象 要求你创建它的实例
  • 嵌入式数据结构(查找)(哈希表)

    嵌入式自学第十二天 1 2 代码实现 list c define CRT SECURE NO WARNINGS include list h include stdlib h include string h include stdio h
  • 2023版ChatGPT 能用来帮助谈恋爱吗,如果用 ChatGPT 来谈恋爱会发生什么?

    大家好啊 有没有和ChatGPT聊过天的 5G高手 们呢 ChatGPT是美国AI公司OpenAI开发出来的一款人工智能聊天机器 会通过学习和理解自然语言来跟我们聊天 不管你想聊啥 从诗歌到哲学 它都可以让你感觉像在跟一个超水平牛逼闪耀的老
  • 静态Web服务器-返回固定页面数据

    学习目标 能够写出组装固定页面数据的响应报文 1 开发自己的静态Web服务器 实现步骤 编写一个TCP服务端程序 获取浏览器发送的http请求报文数据 读取固定页面数据 把页面数据组装成HTTP响应报文数据发送给浏览器 HTTP响应报文数据