import socket
from multiprocessing import Process
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 允许端口被重复绑定,放在bind前
server_socket.bind(('', 8000))
server_socket.listen(128)
def handle_client(client_process):
client_request_data = client_process.recv(1024)
print(client_request_data)
response_start_line = "HTTP/1.1 200 OK\r\n"
response_header = 'Sever: My server\r\n'
response_body = 'I am zjw'
response_data = response_start_line + response_header + "\r\n" + response_body
print("response_data:", response_data)
client_process.send(bytes(response_data, 'utf-8'))
# client_process.send(response_data.encode('utf-8'))
client_process.close()
while True:
client_socket, client_addr = server_socket.accept()
client_socket_process = Process(target=handle_client, args=(client_socket,))
client_socket_process.start()
client_socket.close() # client_socket已在子进程中拷贝了一份,所以主进程中的可以关闭
client_socket_process.join() # 等待子进程结束