python单进程非堵塞服务器

  1. 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()
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只因为你温柔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值