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进行测试。不过,它非常基础,没有实现许多真实服务器所必需的功能和安全性考虑。

相关推荐
迷途之人不知返3 小时前
List的学习
数据结构·c++·学习·list
于先生吖3 小时前
家政派单小程序定制厂家
大数据·小程序
三克的油3 小时前
YOLOV5数据学习
人工智能·学习·yolo
zhangrelay4 小时前
复盘《用智能大模型复盘课程博客停更案例》
笔记·学习
sjsjsbbsbsn4 小时前
RAG 基础学习总结
java·数据库·学习
FserSuN4 小时前
Git Worktree 使用学习
git·学习
YouCanYouUp.4 小时前
个人成长与目标执行手册 V1.0
学习
00后程序员张4 小时前
完整指南 iOS App上架到App Store的步骤详解
macos·ios·小程序·uni-app·objective-c·cocoa·iphone
IT空门:门主4 小时前
Python 数据类型学习笔记
python·学习
学习论之费曼学习法4 小时前
AI 入门 30 天挑战 - Day 20 费曼学习法版 - 语音识别基础
人工智能·学习·语音识别