zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    [转载]利用WCF共享ASP.NET session实现WCF服务端验证
    【转载】WCF REST 工作总结一
    [转载]分享WCF聊天程序WCFChat
    【转载】化零为整WCF(14) 事务(Transaction)
    poj2513
    poj2696
    poj2503
    poj2506
    poj2590
    实践案例丨云连接CC实现跨区域多VPC与线下IDC Server互联
  • 原文地址:https://www.cnblogs.com/duxie/p/11355030.html
Copyright © 2011-2022 走看看