Websocket GetHostEntry vs GetHostAddresses

Websocket GetHostEntry vs GetHostAddresses,websocket,system.net.sockets,Websocket,System.net.sockets,我一直在试图找到使用GetHostAddresses或GetHostEntry的正确位置。通过阅读本文()我了解到,GetHostEntry将执行反向dns查找,而GetHostAddresses则不会 但是,在什么样的情况下,您需要使用GetHostEntry而不是GetHostAddresses?另外,GetHostEntry方法执行反向DNS查找的主要原因是什么 GetHostEntry(主机名或地址) GetHostEntry方法在DNS服务器上查询与主机名或IP地址关联的IP地址。

我一直在试图找到使用GetHostAddresses或GetHostEntry的正确位置。通过阅读本文()我了解到,GetHostEntry将执行反向dns查找,而GetHostAddresses则不会

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

  • GetHostEntry(主机名或地址)
GetHostEntry方法在DNS服务器上查询与主机名或IP地址关联的IP地址。该方法假定,如果在HostName或address参数中传递了IP文字字符串,则应用程序希望返回一个包含所有属性集的IPHostEntry实例。这些属性包括地址列表、别名和主机名。 如果要查找与IP地址关联的主机名,可以使用此方法

反向DNS主要用于跟踪网站访问者来自何处,或电子邮件来源何处等。在正向DNS中,反向DNS通常不那么重要-访问者仍然可以访问您的网站,而您的web服务器IP或访问者的IP没有任何反向DNS。反向DNS对于一个特定的应用程序很重要。Internet上的许多电子邮件服务器配置为拒绝来自任何没有反向DNS的IP地址的传入电子邮件

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


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

与GetHostAddresses相反,我认为它很有用的一种情况是,如果您已经知道主机的一个IP地址,并且希望找到其他IP地址。如果将IP指定为参数,则GetHostEntry将返回所有地址,而GetHostAddresses将仅返回一个地址(当IP指定为参数时)。

伙计,您没有回答我的问题。。问题实际上是在什么情况下需要使用GetHostEntry执行反向DNS查找?为什么需要执行反向DNS查找,而您关心的是获取给定主机名上的ip地址?要知道与ip地址关联的主机名,可以使用GetHostEntry。如果您只是想要ip,那么您使用哪种ip并不重要。:)错了!这很重要!msdn建议GetHostEntry将执行反向DNS查找,这可能会导致“未知此类主机”异常,但GetHostAddresses并非如此。现在的问题是人们使用GetHostEntry方法的主要原因是什么?MSDN说:如果找不到主机名,则返回的SocketException异常值为11001(Windows套接字错误WSAHOST\u not\u found)。如果DNS服务器没有响应,则会返回此异常。如果名称不是正式主机名或别名,或者在查询的数据库中找不到该名称,也可以返回此异常。情况可能并非总是如此。除此之外,gethostaddresses在大多数情况下都足够了。