无法解析IP

时间:2008-11-14 07:48:25

标签: c# .net networking dns

尽我所能,我无法解析IP地址。代码段如下所示。即使我可以使用我的浏览器访问谷歌(DNS服务器几乎肯定正在工作),我一直得到No这样的主机已知异常。然而,我却落后于公司的防火墙。

try
{
   foreach (IPAddress address in Dns.GetHostAddresses("www.google.com"))
   {
      Console.WriteLine(address.ToString());
   }
}
catch (SocketException e)
{
   Console.WriteLine("Source : " + e.Source); // System
   Console.WriteLine("Message : " + e.Message); // No such host is known
}

3 个答案:

答案 0 :(得分:3)

您的代码没有任何问题。鉴于您可以从Web浏览器访问www.google.com,下一个最可能的问题是Web浏览器正在使用代理服务器。 Web浏览器实际上是通过允许通过防火墙的代理服务器访问www.google.com。您编写的简单应用程序不允许通过防火墙并导致异常。

您可以通过查看Internet Explorer中的代理设置来验证这一点。

工具 - >选项 - >连接 - > Lan设置

将有一个代理服务器组的设置。如果存在价值,这几乎肯定是你的问题。

答案 1 :(得分:1)

尝试通过命令行ping www.google.com(或其他主机),而不是尝试通过浏览器。

ping本身可能无法正常工作,但它应首先显示IP地址解析。如果您收到如下错误消息:

    Ping request could not find host www.google.com.
    Please check the name and try again.

然后代理服务器可能会在您浏览时为您执行DNS查找,并且您的DNS服务器无法正常工作或您的计算机的网络设置不正确。

答案 2 :(得分:1)

您需要设置代理:

这是一个片段,应该为以下所有调用设置它:

    protected void SetupProxy(string proxyUrl, string proxyLogin, string proxyPassword, string[] proxyBypass)
    {
        WebProxy proxy = new WebProxy(proxyUrl);
        proxy.Credentials = new NetworkCredential(proxyLogin, proxyPassword);
        proxy.BypassList = proxyBypass;
        proxy.BypassProxyOnLocal = true;
        WebRequest.DefaultWebProxy = proxy;
    }