• Python 简单web服务器的实现


    import re
    import socket
    
    
    def service_cilent(new_socket):
        request = new_socket.recv(1024).decode("utf-8")
        # Python splitlines() 按照行('
    ', '
    ', 
    ')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
        request_lines = request.splitlines()
        print(request_lines)
        file_name = ""
        ret = re.match(r"[^/]+(/[^ ]*)", request_lines[0])
        if ret:
            file_name = ret.group(1)
            if file_name == "/":
                file_name = "index.html"
        try:
            f = open(file_name, "rb")
        except:
            response = "HTTP/1.1 404 NOT FOUND
    
    "
            response += "------file not found-----"
            new_socket.send(response.encode("utf-8"))
        else:
            # 打开文件成功就读文件 然后关闭文件指针
            html_content = f.read()
            f.close()
            # 准备发送给浏览器的数据---header
            response = "HTTP/1.1 200 OK
    
    "
            # 将response header发送给浏览器
            new_socket.send(response.encode("utf-8"))
            # 将response body发送给浏览器
            new_socket.send(html_content)
        # 关闭套接字
        new_socket.close()
    
    
    def main():
        # 创建套接字
        tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        # 绑定
        tcp_server_socket.bind(("", 7089))
        # 监听套接字
        tcp_server_socket.listen(128)
        while True:
            new_socket, cilent_addr = tcp_server_socket.accept()
            service_cilent(new_socket)
        # 关闭监听套接字
        tcp_server_socket.close()
    
    
    if __name__ == '__main__':
        main()
  • 相关阅读:
    电子器件选型:保险丝
    智能硬件类产品测试项目总结
    PCB设计铜箔厚度、线宽和电流关系
    可控硅设计经验总结
    反激变压器安匝比
    外面的世界很精彩,然而等待你的人却可能已不在
    《一条狗的使命》观后感
    HT7A6312—— 离线开关电源小功率初级转换开关IC 记录总结
    Linux
    Python
  • 原文地址:https://www.cnblogs.com/duxie/p/11355030.html
Copyright © 2020-2023  润新知