GetHostEntry 与 GetHostAddresses

use*_*080 5 websocket system.net.sockets

我一直试图找到使用 GetHostAddresses 或 GetHostEntry 的正确位置。我通过阅读这篇文章(http://msdn.microsoft.com/en-us/library/ms143998(v=vs.110).aspx)了解到 GetHostEntry 将执行反向 dns 查找,而 GetHostAddresses 不会..

但是,在什么情况下您需要使用 GetHostEntry 而不是 GetHostAddresses?另外,GetHostEntry 方法执行反向 DNS 查找的主要原因是什么?

Vis*_*j V 3

  • GetHostEntry(主机名或地址)

GetHostEntry 方法向 DNS 服务器查询与主机名或 IP 地址关联的 IP 地址。该方法假定,如果在 hostNameOrAddress 参数中传递 IP 文字字符串,则应用程序希望返回带有所有属性的 IPHostEntry 实例放。这些属性包括地址列表、别名和主机名。如果您想查找与 IP 地址关联的主机名,可以使用此方法。

反向 DNS 主要用于跟踪网站访问者的来源或电子邮件的来源等。它通常不像正向 DNS 那样重要 - 访问者仍然可以正常访问您的网站,而无需进行任何操作。您的网络服务器 IP 或访问者 IP 的任何反向 DNS。反向 DNS 对于某一特定应用非常重要。Internet 上的许多电子邮件服务器都配置为拒绝来自任何没有反向 DNS 的 IP 地址的传入电子邮件。

  • 获取主机地址(主机名或地址)

但是 GetHostAddresses 方法会向 DNS 服务器查询与主机名关联的 IP 地址。如果 hostNameOrAddress 是 IP 地址,则返回该地址而不查询 DNS 服务器。此查询将返回与您提供的主机名相关的所有 IP 地址。

GetHostEntry 和 GetHostAddresses 之间的区别在于,每当您向 GetHostEntry 提供 IP 地址时,它都会查询 DNS 服务器并尝试获取该 IP 地址的主机名,然后获取与其关联的所有地址。如果成功反向解析的数据不在您的 DNS 服务器中,这将会失败。

  • 伙计,你没有回答我的问题..问题实际上是在什么情况下你需要使用 GetHostEntry 来执行反向 DNS 查找?为什么您需要执行反向 DNS 查找,而您关心的是获取给定主机名上的 IP 地址? (2认同)
  • 错误的!这很重要!msdn 建议 GetHostEntry 将执行反向 DNS 查找,这可能会导致“没有已知的主机”异常,但 GetHostAddresses 则不然。现在的问题实际上是人们使用 GetHostEntry 方法的主要原因是什么? (2认同)