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

import socket

from multiprocessing import Process
import threading
import re

def 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()

猜你喜欢

转载自www.cnblogs.com/fuyouqiang/p/11776879.html