From 4e60e66926f3b9bb785bfb8dc27632696331e487 Mon Sep 17 00:00:00 2001 From: binlaab Date: Mon, 27 Apr 2026 10:36:10 +0200 Subject: [PATCH] =?UTF-8?q?ahora=20peerdl=20*=20no=20descarga=20de=20s?= =?UTF-8?q?=C3=AD=20mismo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- es/um/redes/nanoFiles/logic/NFControllerLogicP2P.java | 7 ++++--- es/um/redes/nanoFiles/udp/client/DirectoryConnector.java | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/es/um/redes/nanoFiles/logic/NFControllerLogicP2P.java b/es/um/redes/nanoFiles/logic/NFControllerLogicP2P.java index ddcd643..dfe207b 100644 --- a/es/um/redes/nanoFiles/logic/NFControllerLogicP2P.java +++ b/es/um/redes/nanoFiles/logic/NFControllerLogicP2P.java @@ -165,14 +165,16 @@ public class NFControllerLogicP2P { // TODO: localizar peers con el hash solicitado (o uno concreto) y delegar en // downloadFileFromServers boolean success = false; - if (targetPeerNickname == "*") { + if (targetPeerNickname.equals("*")) { Map peersWithFile = new HashMap(); try { DirectoryConnector dc = new DirectoryConnector(dirLogic.getDirectoryHostname()); // la verdad que debería poder sacarlo de dirLogic peersWithFile = dc.searchFilesByHash(targetHashSubstring); } catch (IOException e) { e.printStackTrace(); } + if (peersWithFile.isEmpty()) return false; success = downloadFileFromServers(peersWithFile.values().iterator().next(), peersWithFile.keySet().iterator().next()); // dios + } else { try { InetSocketAddress[] peerAddr = new InetSocketAddress[] {dirLogic.fetchPeerList().get(targetPeerNickname)}; @@ -190,8 +192,8 @@ public class NFControllerLogicP2P { success = downloadFileFromServers(peerAddr, found[0].fileHash); // voy a darle el hash entero, más fácil que volver a buscarlo } catch (IOException e) { e.printStackTrace(); } - System.out.println("Hemos descargado algo? success = " + success); } + System.out.println("Hemos descargado algo? success = " + success); return success; } /** @@ -217,7 +219,6 @@ public class NFControllerLogicP2P { String filename = ""; NFConnector[] peerConns = new NFConnector[serverAddressList.length]; - for (int i = 0; i < serverAddressList.length; i++) { try { NFConnector nfc = new NFConnector(serverAddressList[i]); diff --git a/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java b/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java index 1ee623b..31c568c 100644 --- a/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java +++ b/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java @@ -349,12 +349,15 @@ public class DirectoryConnector { Map results = new LinkedHashMap(); Map peers = getPeerList(); + InetSocketAddress miIP = peers.get(NanoFiles.peerNickname); for (InetSocketAddress addr : peers.values()) { + if (miIP == addr) continue; try { NFConnector nfc = new NFConnector(addr); FileInfo[] peerFiles = nfc.getFileList(); + // la longitud tiene que ser EXACTAMENTE 1, si es 0 no hay, si es > 1 es ambiguo // y si resulta que dos peers tienen un mismo subhash sin tener el mismo hash? // mando que no se ha podido descargar? comparo contra el hash del primero?