【问题标题】:Limit Dns.GetHostAddresses by time按时间限制 Dns.GetHostAddresses
【发布时间】:2016-12-27 16:41:19
【问题描述】:

我正在编写一个脚本,使用 C# 解析域的 IP 地址

问题是我有很多域无法解析为 IP,因此代码 (Dns.GetHostAddresses) 运行了很长时间,试图为没有 IP 的域解析 IP .

这是代码:

public string getIPfromHost(string host)
{
    try
    {
        var domain = Dns.GetHostAddresses(host)[0];
        return domain.ToString();
    }
    catch (Exception)
    {
        return "No IP";
    }
}

我想要做的是,如果 1 秒后没有 IP,我想返回“无 IP”

我怎样才能做到这一点?

【问题讨论】:

  • 是的,这正是我所需要的!

标签: c# system.net


【解决方案1】:

您可以使用 TPL(任务并行库)来实现此目的。您可以创建新任务并等待 1 秒,如果成功则返回 true,否则返回 false。 只需在getIPfromHost(string host) 这个方法中使用下面的代码。 (这是您需要等待 1 秒的问题的解决方案,请确保您之前的方法运行良好。)

public string getIPfromHost(string host)
        {
            try
            {
                Task<string> task = Task<string>.Factory.StartNew(() =>
                {
                     var domain = Dns.GetHostAddresses(host)[0];
                     return domain.ToString();
                });

            bool success = task.Wait(1000);
            if (success)
            {
                return task.Result;
            }
            else
            {
                return "No IP";
            }

            }
            catch (Exception)
            {

                return "No IP";
            }

        }

【讨论】:

    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 2018-11-07
    相关资源
    最近更新 更多