TCP服务端如何实现并发
import socket
from threading import Thread
from multiprocessing import Process
"""
服务器
1.要有固定的IP和端口
2.24小时不间断提供服务
3.能够支持并发
"""
sever = socket.socket() #括号内不加参数 默认 TCP协议
sever.bind(('127.0.0.1',8080)) #固定ip地址端口号
sever.listen(5) #半连接池
#将通讯循环单独封装成一个函数
def talk(conn):
while True:
try:
data = conn.recv(1024)
# 针对客户端断开连接后
if len(data) == 0:break
print(data.decode('utf-8'))
conn.send(data.upper()) #给客户端回复
except ConnectionResetError as e:
print(e)
break
conn.close()
# 链接循环
while True:
conn,addr = sever.accept()
# 通信循环
# while True:
# try:
# data = conn.recv(1024)
# # 针对客户端断开连接后
# if len(data) == 0:break
# print(data.decode('utf-8'))
# conn.send(data.upper()) #给客户端回复
# except ConnectionResetError as e:
# print(e)
# break
# conn.close()
"""叫其他人来服务客户,起到并发的效果,"""
t = Thread(target=talk,args=(conn,))
'''客户端'''
import socket
client = socket.socket()
client.connect(('127.0.0.1',8080))
while True:
client.send(b'hello world')
data = client.recv(1024)
print(data.decode('utf-8'))