Python实现本地搭建静态Web服务器


在这里插入图片描述

1. 开发自己的静态Web服务器

实现步骤:

  • 编写一个TCP服务端程序
  • 获取浏览器发送的http请求报文数据
  • 读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。
  • HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。

2. 静态Web服务器-返回固定页面数据的示例代码

import socket

# 判断是否是主模块的代码
if \_\_name\_\_ == '\_\_main\_\_':
    # 创建tcp服务端套接字
    tcp\_server\_socket = socket.socket(socket.AF\_INET, socket.SOCK\_STREAM)
    # 设置端口号复用,程序退出端口号立即释放
    tcp\_server\_socket.setsockopt(socket.SOL\_SOCKET, socket.SO\_REUSEADDR, True)
    # 绑定端口号
    tcp\_server\_socket.bind(("", 8000))
    # 设置监听
    tcp\_server\_socket.listen(128)
    # 循环等待接受客户端的连接请求
    while True:
        # 等待接受客户端的连接请求
        new\_socket, ip\_port = tcp\_server\_socket.accept()
        # 代码执行到此,说明连接建立成功
        # 接收客户端的请求信息
        recv\_data = new\_socket.recv(4096)
        print(recv\_data)

        # 打开文件读取文件中的数据
        with open("static/index.html", "r") as file:  # 这里的file表示打开文件的对象
            file\_data = file.read()
        # 提示: with open 关闭文件这步操作不用程序员来完成,系统帮我们来完成

        # 响应行
        response\_line = "HTTP/1.1 200 OK\\r\\n"
        # 响应头
        response\_header = "Server: PWS/1.0\\r\\n"
        # 响应体
        response\_body = file\_data

        # 把数据封装成http 响应报文格式的数据
        response = response\_line + response\_header + "\\r\\n" + response\_body
        # 把字符串编码成二进制
        response\_data = response.encode("utf-8")
        # 发送给浏览器的响应报文数据
        new\_socket.send(response\_data)
        # 关闭服务于客户端的套接字
        new\_socket.close()


3. 小结

编写一个TCP服务端程序

tcp\_server\_socket = socket.socket(socket.AF\_INET, socket.SOCK\_STREAM)

# 循环接受客户端的连接请求
while True:
   conn\_socket, ip\_port = tcp\_server\_socket.accept()

获取浏览器发送的http请求报文数据

client\_request\_data = conn\_socket.recv(4096)

读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。

response\_data = (response\_line + response\_header + "\\r\\n").encode("utf-8") + response\_body

conn\_socket.send(response\_data)

HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。

conn\_socket.close()

静态Web服务器-返回指定页面数据

学习目标

能够写出组装指定页面数据的响应报文

1. 静态Web服务器的问题

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值