我一直在努力寻找使用GetHostAddresses或GetHostEntry的正确位置。我读了这篇文章就明白了(http://msdn.microsoft.com/en-us/library/ms143998(v=vs.110).aspx)GetHostEntry将执行反向dns查找,而GetHostAddresses不会。。
但是,在什么具体情况下,您需要使用GetHostEntry而不是GetHostAddresses?另外,GetHostEntry方法执行反向DNS查找的主要原因是什么?
- GetHostEntry(主机名或地址)
GetHostEntry方法向DNS服务器查询与主机名或IP地址关联的IP地址。该方法假设,如果在hostNameOrAddress参数中传递了一个IP文本字符串,则应用程序希望返回一个IPHostEntry实例,并设置所有属性。这些属性包括AddressList、Aliases和HostName。如果要查找与IP地址关联的主机名,可以使用此方法。
反向DNS主要用于跟踪网站访问者的来源或电子邮件的来源等。它通常不像正向DNS那样重要-如果没有任何针对您的网络服务器IP或访问者IP的反向DNS,访问者仍然可以很好地访问您的网站。反向DNS对于一个特定的应用程序非常重要。互联网上的许多电子邮件服务器被配置为拒绝来自任何没有反向DNS的IP地址的传入电子邮件。
- 获取主机地址(主机名或地址)
但是GetHostAddresses方法向DNS服务器查询与主机名关联的IP地址。如果hostNameOrAddress是一个IP地址,则返回此地址时不会查询DNS服务器。此查询将返回与您提供的主机名相关的所有IP地址。
GetHostEntry和GetHostAddresses之间的区别在于,每当您将IP地址提供给GetHostEntry时,它都会查询DNS服务器,并尝试获取该IP地址的主机名,然后获取与其相关的所有地址。如果成功反向解析的数据不在DNS服务器中,则此操作将失败。
与GetHostAddresses相比,我认为它很有用的一种情况是,如果您已经知道主机的一个IP地址,并想找到其他IP地址。如果将IP指定为参数,则GetHostEntry将返回所有地址,而GetHostAddresses将仅返回一个地址(当IP被指定为参数时)。