基于多线程来实现并发的socket套接字
server
import socket
from threading import Thread
def server(conn):
while True:
try:
data=conn.recv(1024)
except Exception:
continue
if data==b'q':
print('关闭子线程连接')
break
conn.send(data.upper())
if __name__ == '__main__':
soc = socket.socket()
soc.bind(('127.0.0.1', 8080))
soc.listen(2)
while True:
conn, addr = soc.accept()
print(f'{addr}已连接')
t=Thread(target=server,args=(conn,))
t.start()
client
import socket
soc=socket.socket()
soc.connect(('127.0.0.1',8080))
while True:
inp=input('请输入')
data=inp.encode()
soc.send(data)
get_data=soc.recv(1024)
print(get_data)
每当有一个客户端发送请求的时候,服务端就会建立一个连接,因为服务端始终都是卡在 conn, addr = soc.accept()这一步,也就是等待连接建立的这一步,只要有连接他就会继续往下走,然后就完事了,接下来都很简单。