示例#1
0
        List <IPAddress> RetrieveIPAddresses(int countMax)
        {
            List <IPAddress> iPAddresses = new List <IPAddress>();

            while (iPAddresses.Count < countMax)
            {
                if (AddressPool.Count == 0)
                {
                    DownloadIPAddressesFromSeeds();

                    lock (LOCK_Peers)
                    {
                        AddressPool.RemoveAll(
                            a => Peers.Any(p => p.GetID() == a.ToString()));
                    }

                    foreach (FileInfo file in
                             DirectoryLogPeersDisposed.GetFiles())
                    {
                        if (DateTime.Now.Subtract(
                                file.LastAccessTime).TotalHours > 24)
                        {
                            file.Delete();
                        }
                        else
                        {
                            AddressPool.RemoveAll(
                                a => a.ToString() == file.Name);
                        }
                    }

                    if (AddressPool.Count == 0)
                    {
                        return(iPAddresses);
                    }
                }

                int randomIndex = RandomGenerator
                                  .Next(AddressPool.Count);

                IPAddress iPAddress = AddressPool[randomIndex];
                AddressPool.Remove(iPAddress);

                if (iPAddresses.Any(
                        ip => ip.ToString() == iPAddress.ToString()))
                {
                    continue;
                }

                iPAddresses.Add(iPAddress);
            }

            return(iPAddresses);
        }
示例#2
0
 public Builder(AddressPool pAddressPool, Interface pInterface)
 {
     addressPool = pAddressPool;
     inter       = pInterface;
 }
示例#3
0
 public Service(Localhost pLocalhost, AddressPool pAddressPool, Interface pInter)
 {
     localhost   = pLocalhost;
     addressPool = pAddressPool;
     inter       = pInter;
 }