为什么当我做DNS查找时,我会得到套接字异常或错误的数据

本文关键字:异常 套接字 错误 数据 DNS 查找 为什么 | 更新日期: 2023-09-27 17:50:40

当我打开firefox并输入"209.191.122.70"作为URL并按回车键时,它立即解析为"http://failsafe.fp.yahoo.com/404.html"

我的目标是以编程的方式检索相同的信息。

当我使用以下代码时,要么我以SocketException结束,要么我以主机名结束,该主机名看起来不像我使用firefox时得到的url。

    static void Main(string[] args)
    {
        IPHostEntry entry = Dns.GetHostByAddress("209.191.122.70");
        Console.WriteLine(entry.HostName); //ir1.fp.vip.mud.yahoo.com
        Console.Read();
    }

当我尝试其他地址时,我得到的System.Net.Sockets.SocketException说"请求的名称是有效的,但没有找到请求类型的数据",堆栈跟踪如下所示:

 at System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6, Boolean throwOnFailure)
 at System.Net.Dns.GetHostByAddress(String address)
 at reverseIP.Program.Main(String[] args) in C:'test'Program.cs:line 15

一些给我异常的地址在firefox中可以很好地解决。

除了将Firefox作为一个单独的进程启动并使用Windows API在地址栏中检索文本之外,我如何检索我正在寻找的信息?

为什么当我做DNS查找时,我会得到套接字异常或错误的数据

IP地址的反向查找不是 Firefox在这里所做的。

Firefox只是向该IP发出一个http get。

在Pseudo代码中(因为我目前无法访问编译器),相当于Firefox正在做的是

try {
 var request = WebClient.CreateRequest("http://209.191.122.70");
 request.GetResponse();
}
catch(WebException ex) {
 // handle 404 exception here.. You can access the response URL too.
}

System.Windows.Forms.WebBrowser类帮助我获得了我正在寻找的信息