public void buildPeers(String host, int port, int hops){
		LoggerUtil.getLogger().fine("build peers");
		if(this.maxPeerReached() || hops <= 0){
			return;
		}
		
		PeerInfo currentPeer = new PeerInfo(host,port);
		List<P2PMessage> responseList = this.connectAndSend(currentPeer, SharerMessage.PEER_NAME, "", true);
		if(responseList == null || responseList.size() == 0){
			return;
		}
		
		String peerId = responseList.get(0).getMsgData();
		LoggerUtil.getLogger().fine("Connected with " + peerId);
		currentPeer.setId(peerId);
		String dataMsg = String.format("%s %s %d",this.getId(),this.getHost(),this.getPort());
		String respMsgType = this.connectAndSend(currentPeer, SharerMessage.INSERT_PEER,dataMsg,true).get(0).getMsgType();
		
		if(!respMsgType.equals(SharerMessage.REPLY) || this.getPeerKeys().contains(peerId)){
			return;
		}
		
		this.addPeer(currentPeer);
		
		//DFS to add mode peers
		
		responseList = this.connectAndSend(currentPeer, SharerMessage.LIST_PEER, "", true);
		if(responseList.size() > 1){
			responseList.remove(0);
			for(P2PMessage msg: responseList){
				String data []  = msg.getMsgData().split("\\s");
				String nextPId = data[0];
				String nextHost = data[1];
				int nextPort = Integer.parseInt(data[2]);
				if(this.getId().equals(nextPId)){
					buildPeers(nextHost, nextPort, hops-1);
				}
			}
		}
		
		
		
	}