作业29
利用多进程或多线程实现TCP服务端的并发
客户端
import socket
from multiprocessing import Process
from threading import Thread
def task(num, conn):
print(num, "run")
while 1:
try:
data = conn.recv(1024)
if len(data) == 0:
break
if data == b"q":
break
conn.send(data.upper())
except ConnectionError:
break
conn.close()
obj = socket.socket()
obj.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
obj.bind(("127.0.0.1", 8080))
obj.listen(5)
if __name__ == '__main__':
while 1:
conn, cli_adr = obj.accept()
print(cli_adr)
# p = Process(target=task, args=(2, conn))
# p.start()
t = Thread(target=task, args=(2,conn))
t.start()
服务端
import socket
obj = socket.socket()
obj.connect(("127.0.0.1", 8080))
while 1:
data = input("请输入")
obj.send(data.encode("utf-8"))
res = obj.recv(1024).decode("utf-8")
print(res)