非阻塞socket与io多路复用(没整理好)

非阻塞套接字
多人聊天客户端
import socket
server = socket.socket()
server.setblocking(False) #设置非阻塞
server.bind("",6969)
server.listen(5)
clients = [ ] 存放连接进来的客户端
while True:
#循环接收客户端
try:
conn,addr = server.accept()
conn.setblocking(False) #设置这个对等连接为非阻塞
clients.append((conn,addr))
except Exception:
pass
#循环处理对等连接
for client,addr in clients:
#收数据
try:
recv_data = client.recv(1024)
if recv_data:
#给所有的人发一份
data = “receive {} from {}”.format(
recv_data.decode(“utf-8”),
addr
)
for c,a in clients:
c.send(recv_data)
else:
clients.remove((client,addr))
client.close()
except Exception:
pass

#发送端
import socket
client = socket.socket()
client.connect((“127.0.0.1”,6969))
while True:
data = input(">>>")
if data = “q”:
break
client.send(dta.encode)
client.close()

#接收端
import socket
client = socket.socket()
client.connect((“127.0.0.1”,6969))
while True:
res = client.recv(1024)
print(res.decode(“utf-8”))

猜你喜欢

转载自blog.csdn.net/xiaogeldx/article/details/84846155
今日推荐