import socket import gevent import sys from gevent import monkey import re monkey.patch_all() class HTTP_server(object): def __init__(self,port): self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) self.server_socket.bind(("", port)) self.server_socket.listen(128) def run(self): while True: new_socket, addr = self.server_socket.accept() gevent.spawn(self.handle_req, new_socket) def handle_req(self,new_socket): recv_data = new_socket.recv(4096) if not recv_data: print("客户端下线了哦...") new_socket.close() return recv_data = recv_data.decode() data_list = recv_data.splitlines() req_line = data_list[0] ret = re.match(r".* (.*) .*", req_line) file_path = ret.group(1) print("******路径:%s******" % file_path) if file_path == "/": file_path = "/index.html" try: file = open("./static" + file_path, "rb") except Exception as e: resp_line = "HTTP/1.1 404 Not Found\r\n" resp_headers = "Server: HMWS/6.6\r\n" resp_headers += "Content-Type: text/html; charset=utf-8\r\n" resp_headers += "Connection: keep-alive\r\n" resp_headers += "\r\n" resp_body = "<h1>哎呦,出错了哦...404 %s</h1>" % str(e) resp_body = resp_body.encode() else: resp_line = "HTTP/1.1 200 OK\r\n" resp_headers = "Server: HMWS/6.6\r\n" resp_headers += "Content-Type: text/html;charset=utf-8\r\n" resp_headers += "Connection: keep-alive\r\n" resp_headers += "\r\n" resp_body = file.read() file.close() finally: print("finally内的代码一定会执行...") resp = resp_line + resp_headers new_socket.send(resp.encode() + resp_body) new_socket.close() def main(): print(sys.argv) if len(sys.argv) != 2: print("请输入正确的启动命令: python3 web_server.py 8888") return port_str = sys.argv[1] if not port_str.isdigit(): print("请输入合法的端口号!!!, 正确姿势为: python3 web_server.py 8888") return port = int(port_str) http_server = HTTP_server(port) http_server.run() if __name__ == '__main__': main()
python 关于从cmd打开.py 浏览器页面显示数据(封装)
猜你喜欢
转载自blog.csdn.net/ch_zhenhua/article/details/80413917
今日推荐
周排行