为什么Dns.GetHostAddresses无法获取https://google.com的IP地址?

时间:2017-03-09 10:39:39

标签: c# dns

我试图获取#34; https://google.com"的主机地址。使用以下代码:

 var host = Dns.GetHostAddresses("https://google.com");

但我得到一个例外:

{"No such host is known"}

我在想,为什么我无法获得参赛作品?

4 个答案:

答案 0 :(得分:7)

不要仅仅https://提供google.com,因为https://不是主机名的一部分。

 var host = Dns.GetHostAddresses("google.com");

我发现了对URL部分here的非常好的解释,摘录在下面给出。

http://video.google.co.uk:80/videoplay?docid=-7246927612831078230&hl=en#00h02m30s

以下是网址的一些组成部分:

  
      
  • 协议是http。其他协议包括https,ftp等。
  •   
  • 主机或主机名为video.google.co.uk。
  •   
  • 子域名是视频。
  •   
  • 域名是google.co.uk。
  •   
  • 顶级域名或顶级域名是英国。英国域名也称为国家/地区代码顶级域名或ccTLD。对于google.com,TLD   将是com。
  •   
  • 二级域名(SLD)是co.uk。
  •   
  • 端口为80,这是Web服务器的默认端口。其他港口是可能的;例如,Web服务器可以在端口8000上侦听。   当端口为80时,大多数人都会离开端口。
  •   
  • 路径是/ videoplay。路径通常是指Web服务器上的文件或位置,例如, /directory/file.html
  •   
  • 此网址包含参数。一个参数的名称是docid,该参数的值是-7246927612831078230。网址可以有很多   参数。参数以问号(?)开头,并且是   用&符号(&)分隔。请参阅“#00h02m30s”?这叫做a   片段或命名锚。我跟谈过的Google员工是分开的   从中间向下以哪种方式引用它。关于什么的争议   打电话可以通过手臂摔跤,跳舞或喝酒来解决   竞赛。通常,片段用于指代内部   Web文档中的部分。在这种情况下,命名锚意味着   “跳到视频的2分30秒。”我现在想   Google通过从网址中删除任何片段来标准化网址。
  •   

答案 1 :(得分:1)

var host = Dns.GetHostAddresses("google.com")[0];

答案 2 :(得分:1)

您应该删除 https:// 。它应该是这样的:

var host = Dns.GetHostAddresses("google.com");

希望它有所帮助!

答案 3 :(得分:0)

您还可以使用从列表中获取第一个IP地址

  var address = Dns.GetHostAddresses("www.test.com")[0];