import socket import re import multiprocessing SERVE_PORT = (ip, port) = "", 7788 DUCUMENT_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()