这篇文章主要为大家详细介绍了python实现单线程多任务非阻塞tcp服务端的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了python实现单线程多任务非阻塞tcp服务端的具体代码,供大家参考,具体内容如下
# coding:utf-8
from socket import *
# 1.创建服务器socket
sock = socket(af_inet, sock_stream)
# 2.绑定主机和端口
addr = ('', 7788) #
sock.bind(addr)
# 3. 设置最大监听数目,并发
sock.listen(10)
# 4. 设置成非阻塞
sock.setblocking(false)
# 保存客户端socket
clientaddrlist = []
# print(sock.)
while 1:
try:
clientsocket, clientaddr = sock.accept()
except:
pass
else:
print("一个新客户端到来:%s" % str(clientaddr))
clientsocket.setblocking(false)
clientaddrlist.append((clientsocket, clientaddr))
for clientsocket, clientaddr in clientaddrlist:
try:
recvdata = clientsocket.recv(1024)
except:
pass
else:
if len(recvdata) > 0:
print("%s:%s" % (str(clientaddr), recvdata))
else:
clientsocket.close()
clientaddrlist.remove((clientsocket, clientaddr))
print("%s 已经下线" % str(clientaddr))
以上就是python的单线程多任务的实现的详细内容。