JAVA网络爬虫
HttpClient

导航

 
  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()
    
posted on 2019-05-07 21:34  gmlgxx  阅读(54)  评论(0)    收藏  举报