Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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# C中ping的限制时间#_C#_Timeout_Ping - Fatal编程技术网

C# C中ping的限制时间#

C# C中ping的限制时间#,c#,timeout,ping,C#,Timeout,Ping,我需要在短时间内在本地网络中ping ~20台计算机。但是,如果我对不存在的主机(计算机已关闭)使用Ping类,我必须等待约2.5秒,尽管超时时间为50毫秒。我怎么能只等待PingReply 50毫秒,如果没有回复,只需检查下一个主机 下面是代码示例: foreach (var singleUser in userList) { try { Ping userPing = new Ping(); PingRe

我需要在短时间内在本地网络中ping ~20台计算机。但是,如果我对不存在的主机(计算机已关闭)使用
Ping
类,我必须等待约2.5秒,尽管超时时间为50毫秒。我怎么能只等待PingReply 50毫秒,如果没有回复,只需检查下一个主机

下面是代码示例:

foreach (var singleUser in userList)
{
    try
    {
        Ping userPing = new Ping();                    
        PingReply reply = userPing.Send(singleUser, 50);
        if (reply.Status == IPStatus.Success)
        {
            userInfo.Add(singleUser, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
        }
    }
    catch (Exception exc)
    {
        //host not exists
    }
}

也许这有帮助谢谢,我看过了。但我不想使用异步代码变得更复杂,并且在处理acync调用的HostNotFound异常时会出现问题。不同意。异步是进行此操作的唯一方法。System.Threading.Tasks使异步操作的处理变得非常简单。这比试图找到一个解决问题的同步解决方案要容易得多。你不能既有蛋糕又吃。使用同步方法并缩短超时时间将导致错误(找不到主机)。因此,正确的解决方案是使用异步方法。要处理HostNotFound,请创建一个IP和Ping响应字典,该字典设置为false。对于每个成功的ping,将响应设置为True。保留为false的响应是HostNotFound。@ShannonHolsinger我需要在.Net 3.5上设置目标,因此我不能使用System.Threading.Tasks@你是说Ping.SendAsync还是类似IAsyncResult?那么IP呢?如果我使用Dns.GetHostEntry(“Myhost”)——对于禁用的主机,我也会在2.5秒后得到HostNotFound异常。