"""
基于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回收进程,不然在这里阻塞,直至子进程完成,与单进程无区别
多进程并发网络通信---multiprocessing模块的Process实现
猜你喜欢
转载自blog.csdn.net/m0_51489557/article/details/129815835
今日推荐
周排行