- tcp单进程非堵塞服务器
from socket import * def main(): tSocket = socket(AF_INET,SOCK_STREAM) bindAddr = ("",7288) tSocket.bind(bindAddr) #把这个套接字改成非堵塞状态 tSocket.setblocking(False) #把tSocket变为监听(被动)套接字 tSocket.listen(5) clientAddrList = [] while True: try: clientSocket,clientInfo = tSocket.accept() #如果没有用异常处理 这里没有客户端链接 accept取不出来东西就会报错 except: pass else: print("一个新的客户端链接:%s"%str(clientInfo)) clientSocket.setblocking(False) #把这个套接字改成非堵塞状态 clientAddrList.append((clientSocket,clientInfo)) #把新的套接字和ip和端口信息以元组的形式添加列表中 for clientSocket,clientInfo in clientAddrList: try: clientData = clientSocket.recv(1024) #这里读取不到信息也会报错 except: pass else: if len(clientData) > 0: print("%s:%s"%(str(clientInfo),clientData)) else: clientSocket.close() #这里关闭套接字的时候记住 要把它的索引删掉 要不然这个客户端还在 clientAddrList.remove((clientSocket,clientInfo)) print("%s已下线"%str(clientInfo)) if __name__ == "__main__": main()
python单进程非堵塞服务器
于 2019-05-07 21:33:39 首次发布