Exemplo n.º 1
0
        /// <summary>
        /// Resolve address
        /// </summary>
        static async Task <IEnumerable <DnsHostEntry> > ResolveAddressAsync(ProxySocketAddress addr,
                                                                            int period, bool cache)
        {
            Console.WriteLine($"Resolving {addr} for {period} ms...");
            var entries = new HashSet <DnsHostEntry>();
            var cts     = new CancellationTokenSource(period);

            try {
                using (var resolver = await Dns.ResolveAsync(addr, cache, cts.Token)) {
                    cts.Token.ThrowIfCancellationRequested();
                    while (await resolver.MoveNextAsync(cts.Token))
                    {
                        cts.Token.ThrowIfCancellationRequested();
                        Console.WriteLine($"{DateTime.Now}: {resolver.Current}");
                        entries.Add(resolver.Current);
                    }
                }
            }
            catch (OperationCanceledException) { }
            return(entries);
        }