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

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

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

最近更新

  1. TCP协议是安全的吗?

    2024-01-18 12:08:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-18 12:08:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-18 12:08:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-18 12:08:04       20 阅读

热门阅读

  1. 设计模式——迭代器模式

    2024-01-18 12:08:04       35 阅读
  2. springboot多数据源支持自定义连接池

    2024-01-18 12:08:04       40 阅读
  3. 解决fxml图标无法显示

    2024-01-18 12:08:04       31 阅读
  4. 大数据小白初探Hbase从零到入门

    2024-01-18 12:08:04       28 阅读
  5. 排序算法-希尔排序(含C语言代码示例)

    2024-01-18 12:08:04       36 阅读
  6. pdf拆分成各个小pdf的方法

    2024-01-18 12:08:04       33 阅读
  7. 举例说明计算机视觉(CV)技术的优势和挑战

    2024-01-18 12:08:04       26 阅读
  8. Jenkins容器使用宿主机Docker

    2024-01-18 12:08:04       26 阅读