From d1bbc9fb285e5f468ef70034ee07c8b4de658077 Mon Sep 17 00:00:00 2001 From: Mongolila-098 Date: Tue, 28 Apr 2026 13:35:30 +0200 Subject: [PATCH] gg --- .classpath | 6 ++++ .project | 17 ++++++++++++ .../nanoFiles/application/Directory.class | Bin 0 -> 3737 bytes .../nanoFiles/application/NanoFiles.class | Bin 0 -> 2224 bytes .../redes/nanoFiles/logic/NFController.class | Bin 0 -> 6955 bytes es/um/redes/nanoFiles/logic/NFController.java | 6 ++++ .../logic/NFControllerLogicDir.class | Bin 0 -> 7423 bytes .../logic/NFControllerLogicP2P.class | Bin 0 -> 8696 bytes es/um/redes/nanoFiles/shell/NFCommands.class | Bin 0 -> 3613 bytes es/um/redes/nanoFiles/shell/NFShell.class | Bin 0 -> 4487 bytes .../nanoFiles/tcp/client/NFConnector.class | Bin 0 -> 5564 bytes .../nanoFiles/tcp/message/PeerMessage.class | Bin 0 -> 4942 bytes .../tcp/message/PeerMessageOps.class | Bin 0 -> 2279 bytes .../tcp/message/PeerMessageTest.class | Bin 0 -> 2104 bytes .../redes/nanoFiles/tcp/server/NFServer.class | Bin 0 -> 7320 bytes .../redes/nanoFiles/tcp/server/NFServer.java | 5 ++++ .../nanoFiles/tcp/server/NFServerState.class | Bin 0 -> 982 bytes .../nanoFiles/tcp/server/NFServerThread.class | Bin 0 -> 823 bytes .../DirectoryConnector$DownloadedFile.class | Bin 0 -> 776 bytes .../udp/client/DirectoryConnector.class | Bin 0 -> 9634 bytes .../udp/client/DirectoryConnector.java | 26 +++++++++++++----- .../nanoFiles/udp/message/DirMessage.class | Bin 0 -> 8473 bytes .../nanoFiles/udp/message/DirMessageOps.class | Bin 0 -> 1146 bytes .../udp/server/NFDirectoryServer.class | Bin 0 -> 6703 bytes es/um/redes/nanoFiles/util/FileDatabase.class | Bin 0 -> 2328 bytes es/um/redes/nanoFiles/util/FileDigest.class | Bin 0 -> 2557 bytes es/um/redes/nanoFiles/util/FileInfo.class | Bin 0 -> 7099 bytes es/um/redes/nanoFiles/util/FileNameUtil.class | Bin 0 -> 1500 bytes .../redes/nanoFiles/util/NickGenerator.class | Bin 0 -> 1837 bytes 29 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 .classpath create mode 100644 .project create mode 100644 es/um/redes/nanoFiles/application/Directory.class create mode 100644 es/um/redes/nanoFiles/application/NanoFiles.class create mode 100644 es/um/redes/nanoFiles/logic/NFController.class create mode 100644 es/um/redes/nanoFiles/logic/NFControllerLogicDir.class create mode 100644 es/um/redes/nanoFiles/logic/NFControllerLogicP2P.class create mode 100644 es/um/redes/nanoFiles/shell/NFCommands.class create mode 100644 es/um/redes/nanoFiles/shell/NFShell.class create mode 100644 es/um/redes/nanoFiles/tcp/client/NFConnector.class create mode 100644 es/um/redes/nanoFiles/tcp/message/PeerMessage.class create mode 100644 es/um/redes/nanoFiles/tcp/message/PeerMessageOps.class create mode 100644 es/um/redes/nanoFiles/tcp/message/PeerMessageTest.class create mode 100644 es/um/redes/nanoFiles/tcp/server/NFServer.class create mode 100644 es/um/redes/nanoFiles/tcp/server/NFServerState.class create mode 100644 es/um/redes/nanoFiles/tcp/server/NFServerThread.class create mode 100644 es/um/redes/nanoFiles/udp/client/DirectoryConnector$DownloadedFile.class create mode 100644 es/um/redes/nanoFiles/udp/client/DirectoryConnector.class create mode 100644 es/um/redes/nanoFiles/udp/message/DirMessage.class create mode 100644 es/um/redes/nanoFiles/udp/message/DirMessageOps.class create mode 100644 es/um/redes/nanoFiles/udp/server/NFDirectoryServer.class create mode 100644 es/um/redes/nanoFiles/util/FileDatabase.class create mode 100644 es/um/redes/nanoFiles/util/FileDigest.class create mode 100644 es/um/redes/nanoFiles/util/FileInfo.class create mode 100644 es/um/redes/nanoFiles/util/FileNameUtil.class create mode 100644 es/um/redes/nanoFiles/util/NickGenerator.class 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 0000000000000000000000000000000000000000..dda6929bf20917dee137b6ea1a036a7b5d863904 GIT binary patch literal 3737 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 literal 0 HcmV?d00001 diff --git a/es/um/redes/nanoFiles/application/NanoFiles.class b/es/um/redes/nanoFiles/application/NanoFiles.class new file mode 100644 index 0000000000000000000000000000000000000000..06d51b7917b585ee378c0f58e9f3fe721714daf4 GIT binary patch literal 2224 zcma)7ZBr9h6n-v=s!D=1eLc?TTF;x13?n7NNsvauCTD#O?Nj=`6u;T zKXj&_g&B2p#vjn%(+~a7Y5UwHN*vHB%$`N z)ugK`oY>NKvZlqEtko>DEPd0llMC-wLkJ2S+mcUZ(vtQ@GQYm1%DzBvW+pqmoGX?J zv(rm6nNntMX<>SPMj)2kcP{v@X>X(ij;0;k^QG;tNUN^GhzLaNCxhOmWDo*fi%a=p zKAq2%<}zUz0@2}-o40O{j*U-D3-rA^if7EEi}|J1(rms^)W?OnF z-5TXtP1KC(+OnzyIx6b|{kg+A*L~AUYWf-J%XR4~2HWK;&!2ZHYB{qgARe`?6w_QW zYD&2aW_i1bAD${(rfvFn1Okcv6@g%ydm|7yXW$q*_3SePCvZ~FJ~wa*Ck1+PrmYt0 z)pg|-<+{ZzcRtrh8-+HNg&PBoyT2;j1TFK~wN{-)^(41R>sp(>J9uqsWPx+T^Q z3e>+6!2rGt;ra(!7j`^fRSgVch}@hyWk1#2Y&ywBO6yZ#C9A10ZU{^)dvZff#%2uvq>;_Bfu0Xdd?TS;~ zPl=O>{(~XvlQIT+(HUbcW)0lKtib82+*Yg(*4;zX-+Wgm6!_|4G!MdtaQ~wbTh4}A zPA+7L>bs6*DL0BaOzPLXfd!pS$91x&oocmiw`yO1T{Q4Oe?3QeD^0qVb|TNL>r@My z%CfXy!9Y>_b=O>{tURyfqd%<}c!=*<%HF0^w<-_nCew!n@+b^eRPgSO8j3RMzBlj~ zKX5_)tQ~@hxkd>|cY{}O;*eY=V);ECfq{>d!9nV}4HbM@-kz7WR&_-SPTeglUH|0J zo~}cC^jzLLZK{+1-ff-b&wyuHDAS4%-;nUmGJUjbngVr*VeJXK77x)PLQv z@E-aCdpOVM!gH>4AkKFTLB5YMmR=&CD!l`*u%^Qd zAkO#w#*M{!KNrzWRz0}HU!^PLo8W&xhFF+WZ2MUxk;4rvVi*Os;fEN-8e8W&#<7J7 z*hn>~_BQFDgdd5XC4!`nK$%t-f<0Y-V=RQZJ|17;QU?^Ca17JM;!}k~E6Q07E_|H* E4-4!poB#j- literal 0 HcmV?d00001 diff --git a/es/um/redes/nanoFiles/logic/NFController.class b/es/um/redes/nanoFiles/logic/NFController.class new file mode 100644 index 0000000000000000000000000000000000000000..3c43b0c16feb9d8079793e02e904b08a176eb64c GIT binary patch literal 6955 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 b`Jnqb;(prh=RJkb9A~jI6Gsloy$Jt5TY$88 literal 0 HcmV?d00001 diff --git a/es/um/redes/nanoFiles/shell/NFCommands.class b/es/um/redes/nanoFiles/shell/NFCommands.class new file mode 100644 index 0000000000000000000000000000000000000000..d841ca924e7692bd44f42db799b17c1f717f3aa7 GIT binary patch literal 3613 zcma)9U2Ggz75=W*-W{*k@n)K&u~X71aT?nt-r8;2Bu)W)ZO7ZJf12Gm-3D-GcgNm| zXJ2?>cOB&0qeA;D_}e0OGSj~i1e z%QN>}pYxsX{M>WLfB5%}Hvx>}E4OA?R%UKG>(uMI zU3C*^7f4^y*Yu2~+bfy*@+G6<33O%WXP0twi{ts+q=1+Z=*~K}>*=<)s9P-~MpqC} zq}n6raz!bN&}_Ceoy$)Z6jf zu26Au{`_2ietdF6u~%TXRNUNOn40nt`a(}LQ~3o6Fe({K#QE%*sUky>n^l37+>}Pr zz1&NMh?|r)5W7Rfxm@;)RNN)7XK78h%<59hHJVG6Fom?gkl)JS#JXpU3GClVb;)tqI`aw@u|Ejw1#XlesK zJ6h_VR@c|HvZ48`s)Gs^1cqfK8X2+co#wjcIa;M=R93Y{)A5{&V-dODptrJVncljB zvjRiDN6U0Q=`FwyFtsuf$Z-=-K~Z4jUG;TMCP5pZsmy?_*9}r*jfa~p+eZ%wH#MGD zt!b>#FZG#?E2dYAx_Xp0+g$lM-!w6*nrXk2-eUq2Rp*LrIeIm4w%l~;Tc|Rkn(o## zw^e5I%47|!8b-qDDfSQ-BvZyyr zDTkZ!Q~ps)B8HU|3>;xcN?3t`{CgX!Jk32pvWiYPXa)8TL{4CM>IWy17(qP+8xD`4 zak-^iZf?b9h*{kw!5xhrlZX6r3QdqxXPNWHAIbh~;Q5NPV~H=L+nNobLymHjzc~)a zf~QwjXZ1!Hbx%0XicX*^eQz5Yn+Sdf6LLGo8$Wgdnz|*T)oGC1^f8SfLyDWD;M%mlF6Q=a?VRcB>Sg!qc2jJ{QaW zA30l8@D--!@JRp2F;^!2Ybksk&u}Yf6@e2w)F(QqgPU+NRNq4#X)XD78VM+!>LRl)EBwigI^E-bJ}5B1^p8 z5m}{tTSVSNd2dACNBQ=Myq|J!MDC+>AR^yE`F#=jAmuwFvW7l+?K74>dB6H^4oJQ` z7~9=A!bk`BIrlo+xd;3!ow|v^Qmp+A+*2sEclfW4xc`bL{8u8~?Z1_Dm;X-3)2U#Q zNcRQ{CEXV+I@7y?MKV1aEV|NFxp*C!bk|Lclw#_A^rIdtlseQ03#GVvqEJexV}+8U zK2#{BM3ZE}?)&d7v`a7`;8Vhq5?qKo`@#h{U?S9@Z4>4)eOxrxu z_9*pr3}J;fmvApGbJnb36raR>c!Jtb;uxOB19%1x;=4GG=Wzlr;Us>JG5mu1zr;9x zjS1X97Qe+LeupXip6GwXY5WN@_zQCQD;~yMID@| literal 0 HcmV?d00001 diff --git a/es/um/redes/nanoFiles/shell/NFShell.class b/es/um/redes/nanoFiles/shell/NFShell.class new file mode 100644 index 0000000000000000000000000000000000000000..bd685d22789323aa65fe06ad503a5279ada01255 GIT binary patch literal 4487 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f8e7cb42344ead7cae23c93af9b2cbfac4703c33 GIT binary patch literal 5564 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 Hgo;-HRcyJG literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..27178c3a15d4ee68efed63c7cfcb0d1835d452df GIT binary patch literal 4942 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 OAzg<;TYgMis{RW@%oQsD literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..fb4f5a978741e048539e491b05d88ed329433f60 GIT binary patch literal 2279 zcmb7G-%}e^6#gzD*(C%TQYbcR)s|9zl~7Py3&j!=Fl|C83uvqwm$0NuLz3BS>h#GO zN1uImoas!TeDOiSX|0YO-<_L{gwrp}crX4SOk1p*_Zn*yDSq*ic& zDz!@z#xO=B7{j=LLj9UXeurv|Bu9PBPNXi@&&3E%Bd#FPR*Y_76_?0}4Tn-EJ&XXBSu6G(lif3& z{lAYCZ>F!+FYC3u(}!$1|8YDWMw3#Btq4l;*paef=dF~nqcSB88{}Dsh(&hl#s=ST;+K5BCzE@Zl(NpAW}~Px^2_@qiDXA|CYN=MbkQ z&RpWMkU55BaWcP`ocvxUW{I}&S#&bza~PuKJfC}uSkUv2XxC2|E(8MKV?---b~-~a z=nSEdGboBPsH!tWLs8cpRif@fRE;`I2bhp#lZ8NRid3;_tq_d8sue=9*R_HYyP_4; z*j23%4aMg8Rbun}soWva@u!ku$a0&P6{V`_n34K1pRea8!UtkUoa1GyK9=~w@JFep$MvG9^ zFL9Y%?-JeSAAj}#!~-$T1->Y*{v>A?axpme81Ko9JDiMVfq~b2$V3Oc&zvN05g&S+ z7kEDDH%NKLD2=?lC(r}<8N-jT{q-@rB_G`&4`y<`3%j`M(am~vebhBhD&cWWeshc{ R=OgMvg?Y+OXc+^~eAK literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..cc5d5aca4a697770e42475e4face7d6a6295613f GIT binary patch literal 2104 zcmb7F?N%E_7=8v47Scs36lf?d!BR~qu$1}*sc1vNQUgJQRIFMjn`yF;-PyA{LAewE zc@6dlc*;3mfEQ)^&L)MW;dl-|cD~+so_XHS{rA6D{{VOh&p;Q$JrP<>*9t_H79RKH zn$w__vVF@HVaRL3+7cqzXsx$Js0<_+uI}*zZZ)`9vr3gcVJn872ae~cWrpr-ZigYU zBC8^WZuFT*qK9Fi=y+nY=~hIr%_|MTFj$l}Z|v~E(fjscLe-s+;ePSb#Pam0%N>tl zB>Sv*MzE{`$E)QvsnqK4w(ylBz0klQ!%(E`5w75_f$K4;_Fi0?!YIbH18y)3XD=d^!Z2=Xjav-qwgwT3gAjEC8HU+Q zxx~N+4D*+|Qu4zTCNQPx+#zpf3%MPA@R5luatvd?1&$JLb3w*AGTb~P|E`ZB1MV`6 z#+|tC#e6s$6KWsEgelBmEQM*zYg+fn*=G;M)aVUO^}dOZ@d;6-*i_q0*8=IrG#Q?p zA!w>GSw45Uyvyr1KQr+;78&|#LX~`*@;)kpLLc(@!oY)b&T zD}i_z*mdVX>Jsm$L$dmXB!IC~t2@$#nhDh&r5A&B$#`gV-9OUj(BlziND}xuwTb?+ z;`aUq_oLQhpk&~u^RbFL2epl|YzDT_iOF#7oqjl{Eu?D&DOIQf?r#WHmsP4H4%{p6*4ox?0Y2tlm0I&uQOfR?Bv|V z?L%K&pdOE3tA|tacQ9SyjYgS@K0nZdUwcs_|FR5YFxNd#1S<_5hJt$O9>blEyBF~` z&|tXr|Ed)JmXVkQy+?HbbkT}_BQzScvuI{CC#R3m`&T4R(Wu2hAFj}7wiIaYkIvr1 z0D)Ykb%G@CYZ%rYK?0S*q2dXKcTX_7d-oXWV~lT{U}86MjN6;DGe`LF1k)s)(bBnN zSWAg?;%_W0C1;QDX*x;6pO|=wrPJ*zd<7ig(Mzlk7HQTTyP-KwN25u*ehgs*dbi!y+}4Rb;SBCmgpUJC?~RVu($YB8=zQ!nb6>5beK1nQR)z8n*F0AueDZJ9tVK zE+U5?=qyQCzzwk11lVKXM+46c3>%m*Fim3w`7@1O_yx~t?j>kJ-wV`fm!g$}eYi-! E0sBKW#Q*>R literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..29582f726551f8039d2067c7a7d94b352bf4f168 GIT binary patch literal 7320 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 Q2_pj@;j!`4H5z)q0Z5C?pa1{> literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..4b452cf9659ed4d7985f95deb70ca1bd9f419768 GIT binary patch literal 823 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 F=hqmxw-NvV literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..20abec94e98d9ea804569beb3790825c19646d4f GIT binary patch literal 8473 zcmb7J31FMmegFMs*`F+Z@}a~|6p~j4D3-+P}d$+p}< zj`zL)JO0=EU+?MZwnZl#H~SgBB4lhTX;kb4aOQqtwbVp$ZFUc zj(6H!15QENO`)TqhLKR@P($~@o2-GPptPs8ZD)JmfzHlst#twqOTE>*aJ6 z=?zhhBjJQnP8MlTd;9KQ7nTb=2`hfoiuYJnJRxvTaTgp+Z|%@qSG~Jqj^jy&M;g>g z1tUYzW+fgG*?UTDEsd!aouL>fi+jU|BBA71+!DNN`s}9JDz!%HxI;D|-0WgnT?G%ym5gp)0Tg6f(*)KOb>&~jrP)*EP~ zBC^NVHbNvOHejQml9m^y{k2Y^?M;$dYK2Jl6+>`^i8|DCe@8fCb&ZW4wBmh=tg?vc zKxkx7C>~aDdeF=L1H%+O4Hs=nGgVPNTiTjEZWN%!L^IYJ*eqz6L*aS-p*xmvVT+(V z961^q2@f8~Sfb*4tBG=yQVq$&VT!YMuCvUGnwoY*X?uY@OwSf$_DE1kCfK1Q+oZVZ zFtGros@G*=k=^Stu>?heqSzQuG%8sAwy3GIZO*gu?OAKh9>v79CRSnp0q;;x4Q6d<&TU9ZtTYa12;?yQg)~?aU(*M)H*U28sTY7GX^`3 zHP`GjFd$fzwbR{Wkz{z(YCkq$#gxVS7@sT?LpUT@Fd7=R7~%#($-Uv^;i+Ip+^h2F zCXZNd9K;T#i@Hcow=@snh73$FR3THK~lkq}{ zX9vLYsbkLxTdgz4-f^%}x_!Ti)u<*hMcpRmOCL{$mSSehjKOzIOd%;$VVDL`IXx~N zk4?oU_fR}KY8zyhq)w&jgjVy;f`khnX6$tVoe}a#YheT{7OykMt$~2g)ZKo-! zy?<)rqqvKQ7LE*B$GV5;PCTNZn))*ne~x>YL=s~M6FTWqyy{>uuRZU_$JFxslzYv! z;-ra>W3P&e@$jgk@JSPYftz_kheHW^(V%7EF9i#;jAjx;dpsVEyYVTssL=LTCi<~S z_5Rw#F}s&Caa{HO77rQtI|k+~mS7}l9kSvkK7-GaSS%DzFndx_(;~stF;I5FKbUwA z-s{5WspEPBUl1&xBRk}#V;9bFeZY;gIA`DymJeAbI--$7CMIy63e_B_fjL;%;l^n^ zs^a&Bx0?ob%syT_4SdN&6fpx|Vc62#XxnE#9kvFyQ|-)_ZhTqkbw9pp;z^a4jc{TM zO>u#|Mh>H2&GZKTQv>#}i3w)Wp~E3{!S=Olj0+BOGn$VU?DoPOZ>rvkwli z8u%8zW8mAYBQzh=*O>S&Hj#2nZ5xRg_?M|@oVOlv<5_%PDd=C7P0p5`QO1KG;D-kO zoxwCKH>EZ4ANUdZjVXSw%-x&L1v%KJvcv2lrI4SP_^B4%ipPDdB`hDDO3tV8a}&S7 zdui#`G3Ag(x}K(svP`lVCg$aFN1Dzkx2P3lFFbgRmNFE!Mh3e=qZ}z@oiWC*D-<6% z96lN)7Vik-a;P-}OPE_i^sa+rNi}bzmkL(S6|V?#q0-Si?_d?-|^xF}+ZLkfr~6pL9Arn356l}|Zcj)HSh zHM^ux#WhtiyTl-WiDWd^YlFpt`BP~#u�ahK)^ETzOTi+lL}`6ozVC;#E2OK9?}b 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 IDo5b|KYJ6H7XSbN literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..70d8101fd6b5e4f50cfc9cc1d2f76bf07c51f6d3 GIT binary patch literal 1146 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 literal 0 HcmV?d00001 diff --git a/es/um/redes/nanoFiles/util/FileInfo.class b/es/um/redes/nanoFiles/util/FileInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..5754009d408780688866c629be57535ec38131ef GIT binary patch literal 7099 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 literal 0 HcmV?d00001 diff --git a/es/um/redes/nanoFiles/util/FileNameUtil.class b/es/um/redes/nanoFiles/util/FileNameUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..ed3dd362174a47405cab6c6f536acf44099bdd7e GIT binary patch literal 1500 zcma)6+foxj5Iqwv8)CQxBA}>%K}b+m5w8m>M3GqGQWeB1eVQZ#S+dzlWhWH8`w^B8 zzWS;@C`FZifFI&tc7M=h=kN!B1-#G@V3-h&UM=Yrktf0C zwp=nT*Q88Kcg0m+5-&;7(8|!W!*{uEaeG@|%kGGrVrZW;ZBspBXqk*}GPEXTUWCws zjxgHL&d{AUZLwM{WkqF!XDz`HNy{9!HhIN#^_sC&6-2vfMB;rgkPykQGt8ahpq*fSkB=S(fX|0FWo1ky zjP7>K1(Bp_WYdfxoU(0ENm|@-gri}JVf<8;&3J2AX1M%+S89=8Bt}8`Xm)`BN%W1O zRU=KOozdQw_=ezT?>I!Odkk_oM{C%3puLl{4s@ZLEN<`z0&_uUzn~}a73UKz-!XiE z%jwqnkBBCQ4-o^7Y;OZ>isZ=yB;No1HT8+&THxjyLy*=kLhMEl{UY>HKBd#soIACM)0hcIXllJ5fj7xC2d LV|a$=NMYz744{nB literal 0 HcmV?d00001 diff --git a/es/um/redes/nanoFiles/util/NickGenerator.class b/es/um/redes/nanoFiles/util/NickGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..cf0b8c4a58b8256e605c5d920103ea7304a9e359 GIT binary patch literal 1837 zcma)6T~ixX7=8|cWC1xNG|=iIHMZ)UB!_UwW*2ui5%A;I zyIy$Z&+y|yr!)4>8TB7|WYPHB+BK`EQxNCJQqdk^m&2A(Vm4oNlCjFUWy`K!@|ofW!KY=g;&W;Q*rQhGA|6N zf0Il(n#r*TJ!KVWy1h;6v%{qCa6I%%WQz=LYsXN!M5-$$+_A92@ohiyyu)B%>K^GD zgW5M`3-2*lQLfAH*GYY^s{LLF+)JScae;w?arH){Uef-iDmhv}7QC`@wv=z8_f9ar z&{~=#V%SXK16Wa3J0=jAEBxQB!TQonwBpsH9pkDxC(Gt$&+dgJKE|U29#Vh2Pu5kq zlfozXR3P4VVSjV8%kf(?+^4)G?@|h7R0Kxrs-~Abx2(bk>=IcJDmP@h*K%j)TRSHQ znw!eLfM6?oDyC|zKk{vIxWhE|e)Zyc@j<$c&_8NX!N9T%) zQ)lXWB{<9i z@P8u&Qfn@MDNBwD0?i^11+JVa^1QSY_)1{%zopzl?HV!7g^6+F2#iPPfvg)A61@4# z;@jVRkFGy6)4w5EjLDQ;?3QV}*dsG`F)pQDOvtQVwB(3g%*5pdVnU7+EqRgHD<_Fb zIYsP~&k$2`hS)E!64NqA9FTLwjC`IrD6bQxe33XLZxFNc72>dbjW{CTAdbqnh!^An zaZKJMj>}ub33;1%Q7#iN$yMT{yi2?+-z84Tg8ef#eq=FSxKA8m!Qg$9Wq-$#e<%Ng z&-Yu3s3kn+oi^n86p?!F7ud%Z@m4U_`XtpB;6rRt*oz1Fh>@s=kJ!U5KBs;~@h5CN z{kHaao-~WkYL6Ef7{4*`1Pb_pns#dG)|&LA4{2mE(DEPQSRaO=u}xhTDOAa#8FpYg zGp%)I8a%R}qxJ4d>trjH5q>s$WD5+U28Xu2thj9(L%o%b3y;q literal 0 HcmV?d00001