"""
基于Process的多进程网络并发
1.创建监听套接字
2.等待接收客户端请求
3.客户端连接创建新的进程处理客户端请求
4.原进程继续等待其他客户请求
5.如果客户端退出,则销毁对应的进程
Socket服务端:
1.创建服务器套接字对象
2.绑定套接字ip地址
3.开启套接字监听
4.等待客户端套接字接入
5.客户套接字接入成功并创建客户端会话套接字,信息接收和发送
6.关闭创建的客户端临时会话套接字
"""
from multiprocessing import Process
from socket import *
import signal
import sys
HOST = "127.0.0.1"
PORT = 9090
ADDR = (HOST, PORT)
def dispose(val):
while True:
data = val.recv(1024)
if not data:
break
print(">>>", data.decode())
val.send(b"my server")
val.close()
soc = socket(AF_INET, SOCK_STREAM)
soc.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
soc.bind(ADDR)
soc.listen(5)
print("Listen the port 9090...")
while True:
try:
c, addr = soc.accept()
print("Connect from", addr)
except KeyboardInterrupt:
sys.exit("退出")
except Exception as e:
print(e)
p = Process(target=dispose, args=(c,))
p.daemon = True
p.start()