美文网首页
day03-用tcp写一个服务器,返回网络请求

day03-用tcp写一个服务器,返回网络请求

作者: 落入粪池的凤凰 | 来源:发表于2022-02-08 09:34 被阅读0次

    用tcp写一个服务器,返回网络请求

    import threading
    import socket
    
    
    class WebServe:
        
        def __init__(self):
            """在python的初始化方法中,用 `self.变量`表示的是成员变量
            """        
            self.s_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            self.s_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
            self.s_socket.bind(("",8181))
            self.s_socket.listen(128)
        
        #静态方法
        @staticmethod
        def res_data(c_client:socket.socket):
            try :
                recv_d = c_client.recv(100000).decode()
                path = recv_d.split(" ")[1]
                if path == "/":
                    path = "/index.html"
                file = open("./res"+path,"rb")
                r_data = file.read()
                file.close
            except Exception as e:
                r_line = "HTTP/1.1 404 NOT FOUND\r\n"
                r_header = "server:python\r\nauthor:lingshijun\r\n"
                r_body = "file not found"
                r_result = r_line+r_header+"\r\n"+r_body
                c_client.send(r_result.encode())
            else :
                r_line = "HTTP/1.1 200 OK\r\n"
                r_header = "server:python\r\nauthor:lingshijun\r\n"
                r_result = (r_line+r_header+"\r\n").encode()+r_data
                c_client.send(r_result)
            c_client.close()
    
        def start(self):
            while 1:
                c_client,_ = self.s_socket.accept()
                program=threading.Thread(target=self.res_data,args=(c_client,))
                program.start()
                
    
            
    if __name__ == "__main__":
        WebServe().start()
        
    

    相关文章

      网友评论

          本文标题:day03-用tcp写一个服务器,返回网络请求

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