Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何测试我的DNS连接?_C#_.net_Networking_Dns - Fatal编程技术网

C# 如何测试我的DNS连接?

C# 如何测试我的DNS连接?,c#,.net,networking,dns,C#,.net,Networking,Dns,一个简单的问题。如何测试当前DNS是否正常工作?这会涉及投票吗?我担心这会占用资源,而且还需要在单独的线程上执行。是的,这将涉及查找某些内容、解析主机名或其他DNS功能。此外,您需要确保您尝试解析的主机也没有缓存在本地DNS缓存中 该函数执行查找,但没有提到是否将使用本地缓存。很可能是这样,因为它可能在引擎盖下使用操作系统查找功能。尝试使用dns解析域名。以下几点: 投票1: 由于可能会返回bached值,您可能希望查找不存在的随机域(guid.somedomainyoucontrol.com可

一个简单的问题。如何测试当前DNS是否正常工作?这会涉及投票吗?我担心这会占用资源,而且还需要在单独的线程上执行。

是的,这将涉及查找某些内容、解析主机名或其他DNS功能。此外,您需要确保您尝试解析的主机也没有缓存在本地DNS缓存中


该函数执行查找,但没有提到是否将使用本地缓存。很可能是这样,因为它可能在引擎盖下使用操作系统查找功能。

尝试使用dns解析域名。

以下几点:

投票1:

由于可能会返回bached值,您可能希望查找不存在的随机域(guid.somedomainyoucontrol.com可能),并检查是否得到超时或预期的NXDOMAIN结果

投票2:

关于您担心这可能会花费大量资源的问题:您确实需要解释一下您想要在这里做什么才能得到真正的答案,但是:DNS是一个非常轻量级的协议。我不认为这会对您的客户机或服务器造成很大的影响,这取决于轮询间隔。见鬼,甚至还有“TCP over DNS”隧道,它们确实强调了DNS的功能,而且通常不会为其他人或服务器破坏网络。 最好的办法可能是确定一个保守的轮询超时,并在您拥有的某个域下面解析一个子域,甚至可能直接查询您控制的名称服务器

“联系”:


DNS通常使用UDP。它可以切换到TCP或通过TCP使用,但这不是“正常”用法。所以“联系”这个词可能是误导性的。如果您现在可以解析主机,您可以在任何时间点进行测试。

如果您试图在C代码中执行此操作,请查看

namespace System.Net
文件可在此处找到:

…其中包括类

public static class Dns
文件可在此处找到:

这将允许您编写代码,例如:

IPHostEntry hostInfo = Dns.GetHostByName("www.contoso.com");
Dns类中的其他功能可能对您有用,具体取决于您试图完成的任务


这并不能提供一种直接检查您的“DNS是否关闭”的方法,但可以假设,如果您无法解析一个应始终处于打开状态的网站(例如www.microsoft.com或www.google.com),则您的DNS已关闭或您已失去与internet的连接。如果这不是您要查找的内容,请提供更多详细信息,我们将看看是否可以提供帮助。

是的,我相信它也会缓存查找。有没有办法绕过缓存?请尝试其他主机名。您可以使用一个不存在的工具-查找不会被缓存,每次都会得到一个未找到的。dig、traceroute和/或nslookup甚至netstat都是很好的工具。网络扫描的更多信息unsecure.org抱歉,我在回答时不知怎么错过了你的评论。还有两个用于跟踪程序的开源项目。。。GetHostByName已弃用,请使用GetHostEntry。