0
点赞
收藏
分享

微信扫一扫

模拟浏览器实现,服务端基础框架搭建

sin信仰 2022-03-22 阅读 9
python

Python 进阶篇-系列文章全篇

🍑 Linux操作系统与常用命令
🍑 Linux系统性能定时监控升级,源码可复制
🍑 tcp网络程序的实现步骤,看这个就够了
🍑 http请求与响应,tcp3次握手&四次挥手
🍑 Python进阶:利用线程实现多任务
🍑 Python进阶:进程的状态及基本操作
🍑 Python进阶:一文搞懂迭代器、生成器、协程(附案例)
🍑 数据库:了解MySQL数据类型、SQL命令
🍑 从零开始学SQL:where条件查询与连接
🍑 Python网络开发基础,实现udp聊天器小案例
🍑 多任务版TCP服务端程序开发案例+源码
🍑 【图文教程详解】Ubuntu的两种安装方式
🍑 Python中的深拷贝与浅拷贝


希望本阶段内容帮助大家从Python基础到进阶学习,详情可以关注上方专栏 ↑ ↑ ↑

1. [重点]案例-模拟浏览器实现

  • 导入模块

  • 创建套接字

  • 建立连接

  • 拼接请求报文

  • 发送请求报文

  • 接收服务器返回的数据

  • 处理(截取)

  • 保存

  • 关闭连接

2. [重点]返回固定数据

  • 导入模块

  • 创建套接字

  • 设置地址可以重用

  • 绑定端口和IP

  • 设置套接字为被动

  • 开始接受客户端连接

  • 接受客户端发送的请求协议

  • 判断客户端是否已经下线

  • 拼接响应报文

    • 响应行

    • 响应头

    • 响应空行

    • 响应主体

  • 发送响应报文

  • 关闭和当前客户端的连接

3. [重点]返回固定页面

  • 改进 返回固定内容 的代码

    • 第一步,拷贝 static 到项目目录下
    • 改进代码如下:
    • 第三步

4. [重点]返回指定页面

  • 核心思路,获取请求的资源路径

    • 解码请求的协议

    • 得到请求行

    • 拆分请求行,得到请求的资源路径

    • 打开指定的文件

5. [重点]返回指定页面存在的问题

  • 访问的页面不存在

  • 默认首页,直接访问 地址192.168.150.31:8080不加路径报错

6. [重点]面向对象封装

  • 新建类 WebServer
  • 创建对象方法 __init__() 、start()
  • 修改代码
    • 把套接字初始化的操作,放到 __init__()
    • 把接受客户端连接的代码 放到 start() 方法中
    • 把 request_handler() 函数,变成 对象方法(选中缩进)
    • 在 main() 函数中创建 对象 ws = WebServer() 然后启动 ws.start()

7. [重点]服务端基础框架构建-1

  • 创建 application 文件夹
  • 在 application文件夹中 创建 app.py
  • app.py application函数
  • 修改 request_handler() 把核心代码放到 app模块 application函数中
  • app.py 模块中,创建 parse_request() 专门用于解析请求的资源路径

8. [重点]服务端基础框架构建-2

  • 在application 文件夹中创建一个utils 模块
  • utils 模块中创建 create_http_response() 函数,专门用来拼接响应报文
  • 修改 app模块的application的返回响应协议的部分

9. [重点]给服务器加上命令行参数

  • 导入模块 sys

  • sys.argv 获取系统传递给程序的参数,并且判断个数是否正确

  • 判断端口号是否是纯数字

  • 保存端口号

  • 启动服务器的时候指定端口号

[重点]案例:网游服务器

  • 拷贝游戏资源到 项目目录中

  • 在 webserver 初始化方法中,配置一个字典

  • 初始化项目的方法

  • 修改 request_handler() 代码

  • 设置浏览器优先的解析方式

举报

相关推荐

0 条评论