美文网首页
Python搭建简单服务器

Python搭建简单服务器

作者: 会写代码的小猿猴 | 来源:发表于2022-04-25 09:01 被阅读0次
import socket
import threading
class HttpRequest(object):
    def __init__(self):
        # 创建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)
        # 循环等待接受客户端的连接请求
        self.tcp_server_socket=tcp_server_socket
    @staticmethod
    def handler_client_request(new_socket):
        # 接收客户端的请求信息
        recv_data = new_socket.recv(4096)

        # 判断接收的数据长度是否为0
        if len(recv_data) == 0:
            new_socket.close()
            return
        # 对二进制数据进行解码
        recv_content = recv_data.decode("utf-8")
        print(recv_content)
        # 对数据按照空格进行分割
        request_list = recv_content.split(" ", maxsplit=2)
        # 获取请求的资源路径
        request_path = request_list[1]
        # 去除/
        recv_data_list1 = request_path.split("/", 1)
        # 拿到真正的路径
        request_path1 = recv_data_list1[1]
        # 判断请求的是否是根目录,如果是根目录设置返回的信息
        if request_path1 == "":
            request_path1 = "index.html"
        print(request_path1 + "hhh")
        # 1. os.path.exits
        # os.path.exists("static/" + request_path)
        # 2. try-except
        try:
            # 打开文件读取文件中的数据, 提示:这里使用rb模式,兼容打开图片文件
            with open(request_path1, "rb") as file:  # 这里的file表示打开文件的对象
                file_data = file.read()
            # 提示: with open 关闭文件这步操作不用程序员来完成,系统帮我们来完成
        except Exception as e:
            # 系统找不到这个文件,需要返回404
            # 响应行
            response_line = "HTTP/1.1 404 Not Found\r\n"
            # 响应头
            response_header = "Server: PWS/1.0\r\n"
            with open("error.html", "rb") as file:
                file_data = file.read()
            # 响应体
            response_body = file_data

            # 把数据封装成http 响应报文格式的数据
            response = (response_line +
                        response_header +
                        "\r\n").encode("utf-8") + response_body
            # 发送给浏览器的响应报文数据
            new_socket.send(response)
        else:
            # 代码执行到此,说明文件存在,返回200状态信息
            # 响应行
            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").encode("utf-8") + response_body
            # 发送给浏览器的响应报文数据
            new_socket.send(response)
        finally:
            # 关闭服务于客户端的套接字
            new_socket.close()

    def start(self):
        while True:
            # 等待接受客户端的连接请求
            new_socket, ip_port = self.tcp_server_socket.accept()
            # 代码执行到此,说明连接建立成功
            sub_thread = threading.Thread(target=self.handler_client_request, args=(new_socket,))
            sub_thread.setDaemon(True)
            sub_thread.start()
if __name__ == '__main__':
    web_service=HttpRequest()
    web_service.start()

代码上面都有非常详细的注释,不懂的可以留言讨论,自己创建几个html文件放在工程的根目录下就可以了。

相关文章

  • Http概述

    python3搭建简单的HTTP服务器:python3 -m http.server 8080 URL URI:统...

  • Python一行命令搭建简单的http服务器

    使用python来搭建简单的 HTTP Web 服务器,之前也在网上找了相关资料,大多是python 2 的介绍,...

  • python搭建简单的静态web服务器

    python搭建简单的静态web服务器 [TOC] 储备知识 一丢丢的python(io和多线程的知识) 一丢丢的...

  • Web开发学习之搭建本地测试服务器

    1.通过python搭建服务器(设置本地测试服务器) python -V (查看python的版本信息) #如果P...

  • Python搭建简单服务器

    代码上面都有非常详细的注释,不懂的可以留言讨论,自己创建几个html文件放在工程的根目录下就可以了。

  • 快速开启HTTP服务器

    Python快速快速搭建Web服务器 确保已经有Python环境,使用命令行快速搭建Web服务器 当前所在的文件夹...

  • D3.JS01

    学习笔记,自娱自乐,仅供参考 利用python搭建简单的服务器C:\Users\HP\Desktop\D3>pyt...

  • Python学习--环境搭建

    Python学习入门--环境搭建 Python简介 在进行Python环境搭建之前 ,先简单的介绍一下Python...

  • python基础环境搭建

    python基础环境搭建 Python的环境搭建说难也不难,说简单也不简单。主要有以上几点。 1.Python的安...

  • 部署阿里云服务器

    购买服务器 搭建服务器环境 Ubuntu 16.04 64位 Python 2.7.12 Django 1.11 ...

网友评论

      本文标题:Python搭建简单服务器

      本文链接:https://www.haomeiwen.com/subject/kncfyrtx.html