http服务器的简单使用

来源:互联网 发布:android c语言开发 编辑:程序博客网 时间:2024/06/02 03:22
import socketimport reimport multiprocessingSERVE_PORT = (ip, port) = "", 7788DUCUMENT_ROOT = "./html"class Server(object):    def __init__(self,adree):        self.listen_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)        self.listen_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)        self.listen_socket.bind(adree)        self.listen_socket.listen(128)    def hanle_socket(self):        # 建立进程        while True:            client_socket,client_adree=self.listen_socket.accept()            pro=multiprocessing.Process(target=self.server_socket,args=(client_socket,))            pro.start()    def server_socket(self,client_socket):        # 客户端服务   GET / HTTP/1.1        recvdata=client_socket.recv(4096).decode("utf-8")        # request_lines=recvdata.splitlines()        # request_line=request_lines[0]        # print(request_line)        # filename=re.match(r"[^/]+(/[^ ]*)",request_line).group(1)        filename=re.match(r"\w* (/\S*)",recvdata).group(1)        if filename=="/":            filename=DUCUMENT_ROOT+"/index.html"        else:            filename=DUCUMENT_ROOT+filename        try:            f = open(filename, "rb")        except IOError as a:            response_headers="HTTP/1.1 400 not found\r\n"            response_headers+="\r\n"            response_body="no found\r\n"            # data = response_headers + "\r\n" + response_body            # print(a)        else:            response_headers = "HTTP/1.1 200 ok\r\n"            response_headers += "\r\n"            response_body = f.read().decode("utf-8")            f.close()        finally:            data=response_headers+"\r\n"+response_body            client_socket.send(data.encode("utf-8"))            client_socket.close()def main():    http=Server(SERVE_PORT)    http.hanle_socket()if __name__ == '__main__':    main()
原创粉丝点击