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