void preRecover(){
			String ip=peer.fingerTable.prepreIP;
			int port=peer.fingerTable.preprePort;
			int id=peer.fingerTable.prepreId;
			
			
			String cmd="your_suc_le "+peer.getId()+" "+peer.getId()+" "+peer.fingerTable.ip+" "+peer.fingerTable.port+" "+peer.fingerTable.sucId+" "+peer.fingerTable.sucIP+" "+peer.fingerTable.sucPort;
			
			Socket socket=null;
			try {
				socket=new Socket(ip,port);
			} catch (IOException e) {
				
				e.printStackTrace();
				return;
			}
			PrintWriter pw=getWriter(socket);
			
			pw=getWriter(socket);
			pw.println(cmd);  //pre's suc and suc_suc updated
			
			
			cmd="your_pre_pre_le "+peer.getId()+" "+id+" "+ip+" "+port;
			
			try {
				socket=new Socket(peer.fingerTable.sucIP,peer.fingerTable.sucPort);
			}
			 catch (IOException e) {
				e.printStackTrace();
				return;
			}
			
			pw=getWriter(socket);
			pw.println(cmd);// after this, neighbours are all updated
			
			//below will update self
			peer.fingerTable.preId=peer.fingerTable.prepreId;
			peer.fingerTable.preIP=peer.fingerTable.prepreIP;
			peer.fingerTable.prePort=peer.fingerTable.preprePort;
			
			try {
				socket=new Socket(peer.fingerTable.preIP,peer.fingerTable.prePort);
			} catch (IOException e) {
				e.printStackTrace();
				return;
			}
			
			cmd="yourpre";
			pw=getWriter(socket);
			pw.println(cmd);
			BufferedReader br=getReader(socket);
			String rec="";
			try {
				rec=br.readLine();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return;
			}
			String []s=rec.split(" ");
			peer.fingerTable.prepreId=Integer.parseInt(s[2]);
			peer.fingerTable.prepreIP=s[0];
			peer.fingerTable.preprePort=Integer.parseInt(s[1]);
		    
			//update own's key list
			for (int i=0; i<peer.fingerTable.sucTable.size();i++){
				int fingerNode=peer.fingerTable.sucTable.get(i);
				if (fingerNode == detect_id)
					{peer.fingerTable.sucTable.set(i, peer.getId());
					 peer.fingerTable.ipTable.set(i, peer.fingerTable.ip+" "+peer.fingerTable.port);
					}
			}
		}