Flask框架小程序后端分离开发学习笔记《2》构建基础的HTTP服务器

Flask框架小程序后端分离开发学习笔记《2》构建基础的HTTP服务器

Flask是使用python的后端,由于小程序需要后端开发,遂学习一下后端开发。本节提供一个构建简单的本地服务器的代码,仔细看注释,学习每一步的流程,理解服务器接收请求,回复响应的基本原理。

python 复制代码
import socket
# 这个程序就是一个套路程序,套路程序
# 没必要思考为什么会龙区年#记住套路,能用,就够了
# 运行这个程序后,浏览器打开localhost:2000就能访问了

# 服务器的host为空字符串,表示接受任意ip地址的连接
# post是端口,这里设置为2000,随便选的一个数字(尽量1024以上,以下是操作系统保留的端口)
host = ''
port = 2000

#s是---个socket实例
s = socket.socket()
#s.bind用于绑定(因为服务器有一个固定的端口,所以需要绑定host和port)
#注意bind 函数的参数是一个tuple
s.bind((host, port))


#用一个无限循环采处理请求
while True:
    # 套路,先要s.listen开始监听
    # 注意参数5的含义不必关心
    s.listen(5)
    # 当有客户端过来连接的时候,s.accept函数就会返回2个值
    # 分别是 连接 和 客户端ip 地址
    # 其实程序是在这等着接收连接呢
    connection, address = s.accept()

    # recv 可以接收客户端发送过来的数据
    # 参数是要接收的字节数
    # 返回值是一个bytes类型(随便写的,1024是长度,只接收客户端发送的1024字节,我们之后可以用while持续接收)
    request = connection.recv(1024)

    # bytes类型调用decode ( ' utf-8 ')来转成一个字符串( str)
    print('ip and request,{}\n{}'.format(address, request.decode('utf-8')))

    # b''表示这是一个bytes 对象
    response = b'HTTP/1.1 200 hao\r\n\r\n<h1>Hello world!</h1>'
    # 用sendall发送给客户端
    connection.sendall(response)
    # 发送完毕后,关闭本次连接
    connection.close()

代码效果,运行之后,在浏览器输入:localhost:2000

总结

1.导入socket库:这个库用于网络通信。

2创建Socket对象:使用'socket.socket()*创建了一个socket实例,这是网络通信的基础。

3.绑定Host和Port:使用s.bind((host,port))绑定主机地址和端口号。这里,主机地址设置为空字符串,这意味着服务器将接受来自任意IP地址的连接。端口号设置为2000,通常选择大于1024的值,因为1024以下的端口可能被系统占用。

4.监听连接:通过's.listen(5)·开始监听端口。数字5是backlog"的值,它定义了等待接受的最大连接数。

5.接受连接:在一个无限循环中,使用s.accept()接受客户端的连接请求。这个函数返回连接对象和客户端的地址。

6.处理请求:使用connection.recv(1024)接收来自客户端的数据。这里,1024指定了最大的数据接收量(字节为单位)。

7.发送响应:构建一个简单的HTTP响应消息并通过connection.sendall(response)发送回客户端。这里的响应是一个简单的HTML文档。

8.关闭连接:用connection.close()关闭连接。

总结来说,这段代码演示了一个非常基础的HTTP服务器的工作原理,包括接收客户端连接、处理请求并发送一个简单的HTTP响应。这种服务器可以在本地运行,并通过在浏览器中访问localhost:2000进行测试。不过,它非常基础,没有实现许多真实服务器所必需的功能和安全性考虑。

相关推荐
在路上`几秒前
前端学习之后端java小白(四)之数据库设计
sql·学习
源码师傅2 小时前
uniapp开源多商户小程序商城平台源码 支持二次开发+永久免费升级
小程序·uni-app·多商户商城源码·uniapp开源商城源码·开源多商户小程序商城平台·商城小程序代码·多商户商城小程序源码
咔咔学姐kk2 小时前
大模型微调技术宝典:Transformer架构,从小白到专家
人工智能·深度学习·学习·算法·transformer
Jayyih3 小时前
嵌入式系统学习Day35(sqlite3数据库)
数据库·学习·sqlite
杨天天.4 小时前
小程序原生实现音频播放器,下一首上一首切换,拖动进度条等功能
前端·javascript·小程序·音视频
weixin_177297220694 小时前
盲盒抽卡机小程序:从0到1的蜕变之路
小程序·盲盒·抽谷机
说私域4 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的移动互联网人气氛围营造机制研究
人工智能·小程序·开源
lingggggaaaa4 小时前
小迪安全v2023学习笔记(八十一讲)—— 框架安全&ThinkPHP&Laravel&Struts2&SpringBoot&CVE复现
笔记·学习·struts·安全·网络安全·laravel
CC数分5 小时前
零基础3个月上岸[特殊字符]自学数据分析路线
学习·数据挖掘·数据分析·大学生·考证
HAH-HAH5 小时前
【蓝桥杯 2024 国 Java A】粉刷匠小蓝
c++·学习·数学·算法·职场和发展·蓝桥杯·组合数学