public void run() {
		String inputLine, outputLine;
		
		System.out.println("\tHilo iniciado");
		
		try {
			PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
			BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			
			inputLine = in.readLine();
			//while ( !(inputLine.equals("terminar")) ) {
				
				System.out.println("\t\tMensaje recibido: " + inputLine);
				Gson gson = new Gson();
				
				// Recuperar la informacion de los demas servidores
				// Servidor de informacion personal
				// Puerto del servidor infoPersonalServer es 9800
				String datosServer1 = conseguirInfo(inputLine, "127.0.0.1", 9800);
				infoPersonal InfoPersonal = new infoPersonal();
				Scanner scan;
				int estado;
				if ( datosServer1 != null ){
					datosServer1 = datosServer1.substring(0, datosServer1.length()-1);
					scan = new Scanner(datosServer1).useDelimiter(";");
					estado = scan.nextInt();
					if ( estado == 2 ){
						System.out.println("\t\tError en el Servidor de Informacion Personal");
					} else if ( estado == 1 ){
						System.out.println("\t\tNo existe registros en el Servidor de Informacion Personal sobre "+inputLine);
					} else{
						int longitud = scan.nextInt();
						String datos1 = scan.next();
						
						// Deserializa el string respuesta del servidor
						datos1 = datos1.substring(0, longitud);
	     	 			Type collectionType = new TypeToken<infoPersonal>(){}.getType();
	     	   			InfoPersonal = gson.fromJson(datos1, collectionType);
	     	   		}
	     	   	}
        			
        			// Servidor de imagenes
        			// Puerto del servidor de imagenes es 9700
        			// Deserializa el string respuesta del servidor
        			String datosServer2 = conseguirImagenes(inputLine);
    				imagenes Imagenes = new imagenes();
    				Type collectionType = new TypeToken<imagenes>(){}.getType();
        			if ( datosServer2 != null ){
        				Imagenes = gson.fromJson(datosServer2, collectionType);
        			} else {
        				System.out.println("\t\tNo existe registros en el Servidor de Identikit sobre "+inputLine);
        			}
        			
        			// Servidor de posiciones
				// Puerto del servidor infoPersonalServer es 9600
				String datosServer3 = conseguirInfo(inputLine, "127.0.0.1", 9600);
				posicion Posicion = new posicion();
				if ( datosServer3 != null ){
					datosServer3 = datosServer3.substring(0, datosServer3.length()-1);
					scan = new Scanner(datosServer3).useDelimiter(";");
					estado = scan.nextInt();
					if ( estado == 2 ){
						System.out.println("\t\tError en el Servidor de Posiciones");
					} else if ( estado == 1 ){
						System.out.println("\t\tNo existe registros en el Servidor de Posiciones sobre "+inputLine);
					} else{
						int longitud = scan.nextInt();
						String datos3 = scan.next();
				
						// Deserializa el string respuesta del servidor
						datos3 = datos3.substring(0, longitud);
	     	 			collectionType = new TypeToken<posicion>(){}.getType();
	     	   			Posicion = gson.fromJson(datos3, collectionType);
     		   		}
     		   	}
				
				// Unir las tres fuentes de datos
				persona persona = new persona(InfoPersonal, Imagenes, Posicion);
				
				String datosFinales = persona.toJson();
				
				// Devuelve la informacion al cliente
				// infoPersonalServer Response
				out.println(datosFinales);

				
				// Obtiene la sgte consulta del cliente			
				//inputLine = in.readLine();
				
				// Cierra los buferes y el socket
            		out.close();
            		in.close();
            		socket.close();
			//}
        	} catch (IOException e) {
          	e.printStackTrace();
        	}
        	finally{
            	System.out.println("\tFinalizando Hilo");
        	}
    	}