多进程并发网络通信---multiprocessing模块的Process实现

"""
    基于multiprocess模块得Process类的并发网络通信
        1、创建监听套接字
        2、等待用户接收请求
        3、客户端建立新的进程处理客户端请求
        4、原进程继续等待新的客户端连接
        5、如果客户端退出,销毁对应的进程
"""
import sys
from multiprocessing import *
from socket import *

HOST = "127.0.0.1"
PORT = 8899
ADDR = (HOST, PORT)


def handle(sock):
    while True:
        data = sock.recv(1024)
        # 客户端断开,服务端会收到空字符
        if not data:
            break
        print(data.decode())
        sock.send(b"ok")
    sock.close()
    pass

if __name__ == '__main__':

    sockfd = socket(AF_INET, SOCK_STREAM)
    sockfd.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
    sockfd.bind(ADDR)
    sockfd.listen(5)
    while True:
        try:
            sock, addr = sockfd.accept()
        except KeyboardInterrupt:
            sys.exit()
        except Exception:
            continue
        p = Process(target=handle, args=(sock,))
        p.daemon = True
        p.start()
        # p.join()  不建议使用join回收进程,不然在这里阻塞,直至子进程完成,与单进程无区别

猜你喜欢

转载自blog.csdn.net/m0_51489557/article/details/129815835