From 755d6816c75e3e22c4e018f3b28cb2fc585eb8e1 Mon Sep 17 00:00:00 2001 From: binlaab Date: Tue, 28 Apr 2026 13:20:31 +0200 Subject: [PATCH] cosas varias --- .../nanoFiles/application/NanoFiles.java | 2 +- .../nanoFiles/tcp/client/NFConnector.java | 16 +++++++++- .../redes/nanoFiles/tcp/server/NFServer.java | 25 +++++++++++---- .../udp/client/DirectoryConnector.java | 31 ++++++++++++++----- 4 files changed, 59 insertions(+), 15 deletions(-) diff --git a/es/um/redes/nanoFiles/application/NanoFiles.java b/es/um/redes/nanoFiles/application/NanoFiles.java index 46d6b1d..cfa0fcd 100644 --- a/es/um/redes/nanoFiles/application/NanoFiles.java +++ b/es/um/redes/nanoFiles/application/NanoFiles.java @@ -12,7 +12,7 @@ public class NanoFiles { * que combine los DNIs de ambos miembros del grupo de prácticas. */ public static final String PROTOCOL_ID = "123456789A"; - private static final String DEFAULT_DIRECTORY_HOSTNAME = "192.168.1.46"; + private static final String DEFAULT_DIRECTORY_HOSTNAME = "localhost"; public static String sharedDirname = DEFAULT_SHARED_DIRNAME; public static FileDatabase db; /** diff --git a/es/um/redes/nanoFiles/tcp/client/NFConnector.java b/es/um/redes/nanoFiles/tcp/client/NFConnector.java index 928e570..188ba6d 100644 --- a/es/um/redes/nanoFiles/tcp/client/NFConnector.java +++ b/es/um/redes/nanoFiles/tcp/client/NFConnector.java @@ -1,4 +1,4 @@ -package es.um.redes.nanoFiles.tcp.client; + package es.um.redes.nanoFiles.tcp.client; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -104,6 +104,13 @@ public class NFConnector { System.out.println("Nos vamos de gfl"); return filelist.toArray(new FileInfo[0]); } catch (IOException e) { e.printStackTrace(); return null; } + finally { + try { + socket.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } public boolean downloadChunk(String hash, int chunkNum, RandomAccessFile raf) { @@ -129,6 +136,13 @@ public class NFConnector { } } catch (IOException e) { e.printStackTrace(); } + finally { + try { + socket.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } return success; } diff --git a/es/um/redes/nanoFiles/tcp/server/NFServer.java b/es/um/redes/nanoFiles/tcp/server/NFServer.java index 3dd8e20..64d60fa 100644 --- a/es/um/redes/nanoFiles/tcp/server/NFServer.java +++ b/es/um/redes/nanoFiles/tcp/server/NFServer.java @@ -3,6 +3,7 @@ package es.um.redes.nanoFiles.tcp.server; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.io.EOFException; import java.io.RandomAccessFile; import java.net.InetSocketAddress; import java.net.ServerSocket; @@ -49,7 +50,12 @@ public class NFServer implements Runnable { this.stopServer = true; try { - if (serverSocket != null && !serverSocket.isBound()) { + System.out.println("NFServer - tenemos sockets.size() = " + state.getSockets().size()); + for (Socket s : state.getSockets()) { + System.out.println("Socket cerrado? " + s.isClosed()); + } + if (serverSocket != null && serverSocket.isBound()) { + System.out.println("Cerramos socket servidor"); serverSocket.close(); } } catch (IOException e) { e.printStackTrace(); } @@ -172,10 +178,6 @@ public class NFServer implements Runnable { System.out.println("Total connections = " + connNum); } } - - - - } /* * TODO: (Boletín SocketsTCP) Añadir métodos a esta clase para: 1) Arrancar el @@ -281,8 +283,19 @@ public class NFServer implements Runnable { } } - } catch (IOException e) { + } + catch (EOFException e) { + // nada + } + catch (IOException e) { e.printStackTrace(); + } finally { + try { + socket.close(); + System.out.println("nfserver - cerramos socket de cliente"); + } catch (IOException e) { + e.printStackTrace(); + } } diff --git a/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java b/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java index 0c5a92a..38603b0 100644 --- a/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java +++ b/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java @@ -5,9 +5,11 @@ import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.InetSocketAddress; +import java.net.NetworkInterface; import java.net.SocketTimeoutException; import java.util.Map; import java.util.Arrays; +import java.util.Enumeration; import java.util.LinkedHashMap; import es.um.redes.nanoFiles.tcp.client.NFConnector; @@ -198,6 +200,26 @@ public class DirectoryConnector { public String getDirectoryHostname() { return directoryHostname; } + + public String getClientAddress() { + try { + Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); + + while (interfaces.hasMoreElements()) { + NetworkInterface ni = interfaces.nextElement(); + if (ni.isUp() && !ni.isVirtual() && !ni.isLoopback()) { + Enumeration direccionesInterfaz = ni.getInetAddresses(); + + while (direccionesInterfaz.hasMoreElements()) { + InetAddress addr = direccionesInterfaz.nextElement(); + if (addr instanceof java.net.Inet4Address) return addr.getHostAddress(); + } + } + } + } catch (Exception e) { e.printStackTrace(); } + return null; + + } /** * Método para "hacer ping" al directorio, comprobar que está operativo y que @@ -293,14 +315,9 @@ public class DirectoryConnector { // este trozo hay que cambiarlo porque qué cojones // encima tiene algo mal - String ip = null; - try { - socket.connect(directoryAddress); - ip = socket.getLocalAddress().getHostAddress(); - socket.disconnect(); - } catch (Exception e) {} - DirMessage serve = new DirMessage(DirMessageOps.OPERATION_SERVE, NanoFiles.peerNickname, ip, serverPort); + + DirMessage serve = new DirMessage(DirMessageOps.OPERATION_SERVE, NanoFiles.peerNickname, this.getClientAddress(), serverPort); byte[] serveBytes = serve.toString().getBytes(); byte[] response = sendAndReceiveDatagrams(serveBytes); String respStr = new String(response, 0, response.length);