Exemple #1
0
        } //Busco coincidencias de mis AC con los tags recividos y los envio

        public void EnviarArchivosMD5(IPAddress ip, string MD5Archivos)
        {
            string[] archivos = MD5Archivos.Split('|');
            for (int i = 0; i < archivos.Length; i++)
            {
                for (int x = 0; x < frmCliente.archivosCompartidos.Count; x++)
                {
                    if (Archivo.CompararMD5(frmCliente.archivosCompartidos[x].ArchivoMD5, archivos[i]) && frmCliente.archivosCompartidos[x].Activo)
                    {
                        EnviarUDP(ip, "bitNode@AAS@" + JsonConvert.SerializeObject(frmCliente.archivosCompartidos[x]));
                        break;
                    }
                }
            }
        } //Envio archivos == MD5
Exemple #2
0
 public void EliminarArchivosCompartidosDeMD5(string MD5, IPAddress ip)
 {
     for (int i = 0; i < ArchivosCompartidosVecinos.Count; i++)
     {
         if (Archivo.CompararMD5(ArchivosCompartidosVecinos[i].ArchivoMD5, MD5))
         {
             ArchivosCompartidosVecinos[i].IPPropietario.Remove(ip);
             ArchivoNecesitado.Hacer(null, "DELIP", ip);
             if (ArchivosCompartidosVecinos[i].IPPropietario.Count == 0)
             {
                 ArchivosCompartidosVecinos.RemoveAt(i);
                 break;
             }
         }
     }
     informarArchivo?.Invoke(null, null);
 }
Exemple #3
0
        public static int Hacer(object AS, string hacer, object dato)
        {
            lock (locker)
            {
                switch (hacer)
                {
                case "ADD":     //Añadir
                {
                    ArchivoSolicitado ASAUX = (ArchivoSolicitado)AS;
                    if (!archivosSolicitados.Exists(x => (Archivo.CompararMD5(x.MD5, ASAUX.MD5) && ASAUX.IDPosicion == x.IDPosicion && ASAUX.ParteArchivo == x.ParteArchivo)))
                    {
                        archivosSolicitados.Add(ASAUX);
                    }
                    break;
                }

                case "DEL":     //Eliminar
                {
                    archivosSolicitados.RemoveAt((int)dato);
                    break;
                }

                case "DELIP":     //Existe
                {
                    for (int i = 0; i < archivosSolicitados.Count; i++)
                    {
                        if (archivosSolicitados[i].IPDestino.Equals((IPAddress)dato))
                        {
                            archivosSolicitados.RemoveAt(i);
                            i = -1;
                        }
                    }
                    break;
                }

                case "L":
                {
                    return(archivosSolicitados.Count);
                }
                }
                return(1); //true
            }
        }
Exemple #4
0
            public void ManejarArchivo(int byteRead)
            {
                ArchivoNecesitado find = null;

                for (int i = 0; i < ArchivoNecesitado.Hacer(null, "L", null); i++)
                {
                    if (Archivo.CompararMD5(ArchivoNecesitado.archivosNecesitados[i].MD5, MD5))
                    {
                        find = ArchivoNecesitado.archivosNecesitados[i];
                        break;
                    }
                }
                Console.WriteLine("MD5: " + MD5);

                //Remplazar todo
                lock (pepe)
                {
                    if (find != null && !find.Partes[parte])
                    {
                        //bloquear si es el mismo archivo

                        using (FileStream output = new FileStream(find.RutaDesarga, FileMode.Open))
                        {
                            output.Position = parte * size;
                            if (parte == find.CantidadPartes - 1)
                            {
                                output.Write(datos, 0, find.TamañoUltimaParte);
                            }
                            else
                            {
                                output.Write(datos, 0, datos.Length);
                            }
                            find.Partes[parte] = true;
                            find.PartesDescargadas++;
                        }
                        find.DescargaCompleta();

                        Console.WriteLine("Parte: " + parte + "/" + find.CantidadPartes);
                        Console.WriteLine("Partes totales: " + find.PartesDescargadas + "/" + find.CantidadPartes);
                    }
                }
            }
Exemple #5
0
 public void AgregarArchivoCompartido(Archivo a, IPAddress ip)
 {
     for (int i = 0; i < ArchivosCompartidosVecinos.Count; i++)
     {
         if (Archivo.CompararMD5(ArchivosCompartidosVecinos[i].ArchivoMD5, a.ArchivoMD5))
         {
             if (!ArchivosCompartidosVecinos[i].IPPropietario.Exists(x => x.Equals(ip)))
             {
                 ArchivosCompartidosVecinos[i].IPPropietario.Add(ip);
             }
             informarArchivo?.Invoke(null, null);
             return;
         }
     }
     a.IPPropietario = new List <IPAddress>()
     {
         ip
     };
     ArchivosCompartidosVecinos.Add(a);
     informarArchivo?.Invoke(null, null);
 }