diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..3f3893a
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/.project b/.project
new file mode 100644
index 0000000..17086d9
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ nanofiles
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/es/um/redes/nanoFiles/application/Directory.class b/es/um/redes/nanoFiles/application/Directory.class
new file mode 100644
index 0000000..dda6929
Binary files /dev/null and b/es/um/redes/nanoFiles/application/Directory.class differ
diff --git a/es/um/redes/nanoFiles/application/NanoFiles.class b/es/um/redes/nanoFiles/application/NanoFiles.class
new file mode 100644
index 0000000..06d51b7
Binary files /dev/null and b/es/um/redes/nanoFiles/application/NanoFiles.class differ
diff --git a/es/um/redes/nanoFiles/logic/NFController.class b/es/um/redes/nanoFiles/logic/NFController.class
new file mode 100644
index 0000000..3c43b0c
Binary files /dev/null and b/es/um/redes/nanoFiles/logic/NFController.class differ
diff --git a/es/um/redes/nanoFiles/logic/NFController.java b/es/um/redes/nanoFiles/logic/NFController.java
index 2fe9839..fe91dd9 100644
--- a/es/um/redes/nanoFiles/logic/NFController.java
+++ b/es/um/redes/nanoFiles/logic/NFController.java
@@ -160,6 +160,12 @@ public class NFController {
* servidor escucha conexiones de otros peers así como la lista de ficheros
* disponibles.
*/
+
+ //Comprobamos si ya estamos sirviendo
+ if (controllerPeer.getServerPort() != 0) {
+ System.err.println("* Ya existe un servidor de ficheros activo en el puerto " + controllerPeer.getServerPort());
+ break;
+ }
if (NanoFiles.testModeTCP) {
controllerPeer.testTCPServer();
} else {
diff --git a/es/um/redes/nanoFiles/logic/NFControllerLogicDir.class b/es/um/redes/nanoFiles/logic/NFControllerLogicDir.class
new file mode 100644
index 0000000..3f9c571
Binary files /dev/null and b/es/um/redes/nanoFiles/logic/NFControllerLogicDir.class differ
diff --git a/es/um/redes/nanoFiles/logic/NFControllerLogicP2P.class b/es/um/redes/nanoFiles/logic/NFControllerLogicP2P.class
new file mode 100644
index 0000000..15a2a53
Binary files /dev/null and b/es/um/redes/nanoFiles/logic/NFControllerLogicP2P.class differ
diff --git a/es/um/redes/nanoFiles/shell/NFCommands.class b/es/um/redes/nanoFiles/shell/NFCommands.class
new file mode 100644
index 0000000..d841ca9
Binary files /dev/null and b/es/um/redes/nanoFiles/shell/NFCommands.class differ
diff --git a/es/um/redes/nanoFiles/shell/NFShell.class b/es/um/redes/nanoFiles/shell/NFShell.class
new file mode 100644
index 0000000..bd685d2
Binary files /dev/null and b/es/um/redes/nanoFiles/shell/NFShell.class differ
diff --git a/es/um/redes/nanoFiles/tcp/client/NFConnector.class b/es/um/redes/nanoFiles/tcp/client/NFConnector.class
new file mode 100644
index 0000000..f8e7cb4
Binary files /dev/null and b/es/um/redes/nanoFiles/tcp/client/NFConnector.class differ
diff --git a/es/um/redes/nanoFiles/tcp/message/PeerMessage.class b/es/um/redes/nanoFiles/tcp/message/PeerMessage.class
new file mode 100644
index 0000000..27178c3
Binary files /dev/null and b/es/um/redes/nanoFiles/tcp/message/PeerMessage.class differ
diff --git a/es/um/redes/nanoFiles/tcp/message/PeerMessageOps.class b/es/um/redes/nanoFiles/tcp/message/PeerMessageOps.class
new file mode 100644
index 0000000..fb4f5a9
Binary files /dev/null and b/es/um/redes/nanoFiles/tcp/message/PeerMessageOps.class differ
diff --git a/es/um/redes/nanoFiles/tcp/message/PeerMessageTest.class b/es/um/redes/nanoFiles/tcp/message/PeerMessageTest.class
new file mode 100644
index 0000000..cc5d5ac
Binary files /dev/null and b/es/um/redes/nanoFiles/tcp/message/PeerMessageTest.class differ
diff --git a/es/um/redes/nanoFiles/tcp/server/NFServer.class b/es/um/redes/nanoFiles/tcp/server/NFServer.class
new file mode 100644
index 0000000..29582f7
Binary files /dev/null and b/es/um/redes/nanoFiles/tcp/server/NFServer.class differ
diff --git a/es/um/redes/nanoFiles/tcp/server/NFServer.java b/es/um/redes/nanoFiles/tcp/server/NFServer.java
index 3dd8e20..42e9c72 100644
--- a/es/um/redes/nanoFiles/tcp/server/NFServer.java
+++ b/es/um/redes/nanoFiles/tcp/server/NFServer.java
@@ -278,8 +278,13 @@ public class NFServer implements Runnable {
msgOut.writeMessageToOutputStream(dos);
}
break;
+
+ default:
+ System.err.println("* [Servidor] Recibido opcode inesperado o inválido");
+ break;
}
+
}
} catch (IOException e) {
e.printStackTrace();
diff --git a/es/um/redes/nanoFiles/tcp/server/NFServerState.class b/es/um/redes/nanoFiles/tcp/server/NFServerState.class
new file mode 100644
index 0000000..5b41e0c
Binary files /dev/null and b/es/um/redes/nanoFiles/tcp/server/NFServerState.class differ
diff --git a/es/um/redes/nanoFiles/tcp/server/NFServerThread.class b/es/um/redes/nanoFiles/tcp/server/NFServerThread.class
new file mode 100644
index 0000000..4b452cf
Binary files /dev/null and b/es/um/redes/nanoFiles/tcp/server/NFServerThread.class differ
diff --git a/es/um/redes/nanoFiles/udp/client/DirectoryConnector$DownloadedFile.class b/es/um/redes/nanoFiles/udp/client/DirectoryConnector$DownloadedFile.class
new file mode 100644
index 0000000..a154b0f
Binary files /dev/null and b/es/um/redes/nanoFiles/udp/client/DirectoryConnector$DownloadedFile.class differ
diff --git a/es/um/redes/nanoFiles/udp/client/DirectoryConnector.class b/es/um/redes/nanoFiles/udp/client/DirectoryConnector.class
new file mode 100644
index 0000000..d49307c
Binary files /dev/null and b/es/um/redes/nanoFiles/udp/client/DirectoryConnector.class differ
diff --git a/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java b/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java
index 0c5a92a..caca377 100644
--- a/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java
+++ b/es/um/redes/nanoFiles/udp/client/DirectoryConnector.java
@@ -6,6 +6,7 @@ import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketTimeoutException;
+import java.net.SocketException;
import java.util.Map;
import java.util.Arrays;
import java.util.LinkedHashMap;
@@ -115,21 +116,32 @@ public class DirectoryConnector {
DatagramPacket pktFromServer = new DatagramPacket(responseData, responseData.length);
int intentos = 0;
boolean recibido = false;
+ //Hay que configurar el timeout antes del bucle
+ try {
+ socket.setSoTimeout(TIMEOUT);
+ } catch (SocketException e) {
+ System.err.println("* Error configurando el timeout del socket UDP: " + e.getMessage());
+ return null;
+ }
while (intentos < MAX_NUMBER_OF_ATTEMPTS && !recibido) {
try {
socket.send(pktToServer);
- socket.setSoTimeout(TIMEOUT);
socket.receive(pktFromServer);
recibido = true;
- } catch (IOException e) {
+ //excepciones tratadas
+ } catch (SocketTimeoutException e){
intentos++;
- if (intentos == MAX_NUMBER_OF_ATTEMPTS) {
- System.err.println("DirectoryConnector.sendAndReceiveDatagrams: socket.receive()");
- System.exit(-1);
- }
+ System.err.println("* Timeout. Reintentando... (" + intentos + "/" + MAX_NUMBER_OF_ATTEMPTS + ")");
+ } catch (IOException e) {
+ System.err.println("* Error grave de I/O en UDP: " + e.getMessage());
+ System.exit(-1);
}
+
+ }
+ if (intentos == MAX_NUMBER_OF_ATTEMPTS) {
+ System.err.println("* El directorio no responde tras " + MAX_NUMBER_OF_ATTEMPTS + " intentos.");
+ System.exit(-1);
}
-
String servResp = new String(responseData, 0, pktFromServer.getLength());
response = servResp.getBytes();
System.out.println("Hemos recibido " + servResp);
diff --git a/es/um/redes/nanoFiles/udp/message/DirMessage.class b/es/um/redes/nanoFiles/udp/message/DirMessage.class
new file mode 100644
index 0000000..20abec9
Binary files /dev/null and b/es/um/redes/nanoFiles/udp/message/DirMessage.class differ
diff --git a/es/um/redes/nanoFiles/udp/message/DirMessageOps.class b/es/um/redes/nanoFiles/udp/message/DirMessageOps.class
new file mode 100644
index 0000000..70d8101
Binary files /dev/null and b/es/um/redes/nanoFiles/udp/message/DirMessageOps.class differ
diff --git a/es/um/redes/nanoFiles/udp/server/NFDirectoryServer.class b/es/um/redes/nanoFiles/udp/server/NFDirectoryServer.class
new file mode 100644
index 0000000..5efe375
Binary files /dev/null and b/es/um/redes/nanoFiles/udp/server/NFDirectoryServer.class differ
diff --git a/es/um/redes/nanoFiles/util/FileDatabase.class b/es/um/redes/nanoFiles/util/FileDatabase.class
new file mode 100644
index 0000000..72c54f0
Binary files /dev/null and b/es/um/redes/nanoFiles/util/FileDatabase.class differ
diff --git a/es/um/redes/nanoFiles/util/FileDigest.class b/es/um/redes/nanoFiles/util/FileDigest.class
new file mode 100644
index 0000000..a16d998
Binary files /dev/null and b/es/um/redes/nanoFiles/util/FileDigest.class differ
diff --git a/es/um/redes/nanoFiles/util/FileInfo.class b/es/um/redes/nanoFiles/util/FileInfo.class
new file mode 100644
index 0000000..5754009
Binary files /dev/null and b/es/um/redes/nanoFiles/util/FileInfo.class differ
diff --git a/es/um/redes/nanoFiles/util/FileNameUtil.class b/es/um/redes/nanoFiles/util/FileNameUtil.class
new file mode 100644
index 0000000..ed3dd36
Binary files /dev/null and b/es/um/redes/nanoFiles/util/FileNameUtil.class differ
diff --git a/es/um/redes/nanoFiles/util/NickGenerator.class b/es/um/redes/nanoFiles/util/NickGenerator.class
new file mode 100644
index 0000000..cf0b8c4
Binary files /dev/null and b/es/um/redes/nanoFiles/util/NickGenerator.class differ