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时

 

 进程也成功结束

posted @ 2020-09-13 22:49  磊神加特林  阅读(161)  评论(0)    收藏  举报