python 多进程模式处理用户需求
在服务器端往往需要处理多个用户需求,这时候就需要建立多个进程
服务器端代码
# 导入相关包 import multiprocessing,socket # 全局变量定义 SERVER_HOST = 'localhost' SEVER_PORT = 8080 i = 0 # 建立main函数,建立sockert,开启监听,建立进程 def main(): global i with socket.socket() as server_socket: server_socket.bind((SERVER_HOST,SEVER_PORT)) server_socket.listen() while True: print("服务器进入监听状态,监听端口%d" % SEVER_PORT) client_conn,cilent_addr = server_socket.accept() client_process = multiprocessing.Process(target=deal, args=(client_conn, cilent_addr,), name="Process - %d"%i) client_process.start() i = i + 1 # 建立进程指定函数,处理输入然后输出,遇到exit退出 def deal(conn, addr): print("客户端连接地址:{0},连接端口:{1}".format(addr[0],addr[1])) if conn: print("{0}进程连接了。地址:{1}".format(multiprocessing.current_process().name, addr[1])) while True: data = conn.recv(100).decode('UTF-8') if data.upper() == 'BYEBYE': conn.send("exit".encode('UTF-8')) print("%s 进程结束了!!" % multiprocessing.current_process().name) break else: data = "[echo]%s" % data conn.send(data.encode("UTF-8")) if __name__ == '__main__': main()
客户端代码:
import socket SERVER_HOST = 'localhost' SERVER_PORT = 8080 def main(): with socket.socket() as client_socket: client_socket.connect((SERVER_HOST,SERVER_PORT)) print('----连接成功-----') while True: data = input("请输入你要的数据:") data = client_socket.send(data.encode("UTF-8")) data = client_socket.recv(100).decode("UTF-8") if data == 'exit': print(data) break else: print(data) print("该进程结束了") if __name__ == '__main__': main()

成功连接,而且正确返回,当输入byebye时

进程也成功结束

浙公网安备 33010602011771号