python-多进程、多线程实现http 服务器

。_饼干妹妹 提交于 2019-12-03 04:22:58
import socketfrom multiprocessing import Processimport threadingimport redef handle_client(client_socket):    """    处理客户端请求    """    request_data = client_socket.recv(1024).decode('utf-8')    request_lines = request_data.splitlines()    ret = re.match(r'[^/]+(/[^ ]*)', request_lines[0])    print(">>", ret.group(1))    # 构造响应数据    response_start_line = "HTTP/1.1 200 OK\r\n"    response_headers = "Server: My server\r\n"    # response_body = "<h1>Python HTTP Test</h1>"    f = open('index.html', 'rb')    response_body = f.read()    f.close()    response = response_start_line + response_headers + "\r\n" #+ response_body    # 向客户端返回响应数据    client_socket.send(bytes(response, "utf-8"))    client_socket.send(response_body)    # 关闭客户端连接    client_socket.close()if __name__ == "__main__":    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    server_socket.bind(("", 1122))    server_socket.listen(128)    while True:        client_socket, client_address = server_socket.accept()        print("[%s, %s]用户连接上了" % client_address)        '''         # 下面三行为多进程(进程需要close,因为子进程复制了进程的代码)        # handle_client_process = Process(target=handle_client, args=(client_socket,))        # handle_client_process.start()        # client_socket.close()        '''        # 下面两行为多线程        t1 = threading.Thread(target=handle_client, args=(client_socket,))        t1.start()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!