首页 > 其他分享 >手写web框架--了解web运行机制。

手写web框架--了解web运行机制。

时间:2023-04-30 16:44:06浏览次数:45  
标签:web HTTP -- server 访问 手写 conn

第一步--写一个服务端

import socket

server = socket.socket()  # 默认就是TCP协议

server.bind(('127.0.0.1', 8080))
server.listen(5)

while True:
    conn, addr = server.accept()  # 三次四次挥手
    data = conn.recv(1024)  # 接收消息
    print(data)
    conn.send(b'hello world!')
    conn.close()

运行这个服务端。
用浏览器发送请求。

遇到问题,浏览器说,ERR_INVALID_HTTP_RESPONSE 响应无效。

第二步,解决第一步遇到问题。--响应无效

分析是

  • 因为浏览器是有自己的规范的,没有安装人家的规范来。
  • 人家的规范叫HTTP协议。
    解决是
conn.send(b'HTTP/1.1 200 OK \r\n\r\nhello world!!')
# 按照HTTP协议来

查看结果:

现在一切OK,可恶的产品经理有新的需求
说要根据不同的url访问不同的页面。
比如:
访问127.0.0.1:8080/login访问一个登录的页面
访问127.0.0.1:8080 访问一个首页

如何解决“ta”的需求?

第三步--解决第二步新的需求--根据路由访问不同的页面

分析:
试了一下,通过浏览器访问不同的url地址。
服务端拿到的数据是不有变化的。

所以,我们看看能否利用字符串切割出想要的reg和login
解决:
先解码,再切割。

参考资料:https://www.cnblogs.com/Dominic-Ji/articles/16294929.html

标签:web,HTTP,--,server,访问,手写,conn
From: https://www.cnblogs.com/liqi175/p/17365391.html

相关文章

  • oop题目集04-06总结性blog
    oop题目集04*菜单计价程序-3*有重复的数据*去掉重复的数据*单词统计与排序*面向对象编程(封装性)*GPS测绘中度分秒转换*判断两个日期的先后,计算间隔天数、周数 oop题目集05*正则表达式训练-QQ号校验 * 字符串训练-字符排序*正则表达式训练-验证码校验* 正则表达式......
  • macbook air 安装 MacOS 及 win10
    前期准备mac电脑、16G的U盘、可以访问的AppStore帐号。重要提示U盘和硬盘数据格式化后不可恢复,需提前做好数据备份。安装macos需要连网。创建可引导的macOS安装器1、U盘y要求至少有14GB可用储存空间,格式化为MacOS扩展格式。2、下载macos系统镜像3、使用“终端”......
  • BFD单臂回声
    全局启用BFD[R3]bfd配置bfdR3]bfdaabindpeer-ip12.1.1.2interfaceGigabitEthernet0/0/0source-ip1.1.1.1one-arm-echo[R3-bfd-session-aa]discriminatorlocala [R3-bfd-session-aa]discriminatorlocal1[R3-bfd-session-aa]commit静态路由引用[R3]iproute-stat......
  • 动态规划(1)
    背包问题(1)01背包 ——每件物品最多使用一次 有 N件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。 #include<iostream>#......
  • vue3 vueRouter4 :No match found for location with path ***
    0.采用vue+router4做路由导航.首次载入控制台很干净.F5刷新后,控制台爆出警告,但点击路由正常工作.1.经过排查发现,是menu中使用了<router-link>这玩意,后来改造成  @click="router.push(ele.path)"即可消除警告 2.网络上各种方式我均尝试过,都是无效方案,比如:......
  • 【无人机三维路径规划】基于人工势场算法实现球体障碍下无人机三维路径规划附matlab代
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 【路径规划-机器人栅格地图】基于遗传算法求解光伏实验室小车路径规划附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • CentOs7:如何安装jdk、mysql、redis、gti、maven?
       一、JDK使用压缩包安装,jdk-8u361-linux-x64.tar.gz。//1、解压tar-zvxf....tar.gz//2、配置环境变量vim/etc/profile//新增内容JAVA_HOME=/soft/jdk1.8.0_361PATH=$JAVA_HOME/bin:$PATH//3、重新加载文件profilesource/etc/profile//4、测试ja......
  • 十进制转任意进制
    除基取余法不断的除以基数(几进制,基数就是几)得到余数,直到商数为0,再将余数倒着拼起来即可。例:......
  • MATLAB实现PSO-SVM多输入单输出回归预测(粒子群算法优化支持向量机)
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......