C# Ping IPs—;一次还是多次?

C# Ping IPs—;一次还是多次?,c#,ping,C#,Ping,我正在使用下面的代码ping IP地址并检查它是否在线。 现在我只想知道,这个C#的ping.Send(ipAddress)将只执行一次ping或三次ping Ping ping = new Ping(); PingReply pingReply = ping.Send(ipAddress); if (pingReply.Status == IPStatus.Success) { // Proceed as normal. } else { // Send email to A

我正在使用下面的代码ping IP地址并检查它是否在线。 现在我只想知道,这个C#的
ping.Send(ipAddress)
将只执行一次ping或三次ping

Ping ping = new Ping();
PingReply pingReply = ping.Send(ipAddress);

if (pingReply.Status == IPStatus.Success)
{
    // Proceed as normal.
}
else
{
    // Send email to Admin.
}

一次呼叫ping.Send将发送一个ICMP包。中的任何内容都不表示进行了多次尝试:

尝试将Internet控制消息协议(ICMP)回显消息发送到指定的计算机,并从该计算机接收相应的ICMP回显回复消息


一次呼叫ping.Send将发送一个ICMP包。中的任何内容都不表示进行了多次尝试:

尝试将Internet控制消息协议(ICMP)回显消息发送到指定的计算机,并从该计算机接收相应的ICMP回显回复消息


它将执行一次ping操作,如方法描述所示

尝试将具有指定数据缓冲区的Internet控制消息协议(ICMP)回显消息发送到具有指定IP地址的计算机,并从该计算机接收相应的ICMP回显回复消息。此方法允许您指定操作的超时值


中,它将执行一次ping操作,如方法说明所示

尝试将具有指定数据缓冲区的Internet控制消息协议(ICMP)回显消息发送到具有指定IP地址的计算机,并从该计算机接收相应的ICMP回显回复消息。此方法允许您指定操作的超时值



您的答案在几秒钟内。@Patrick Hofman因此,如果我想进行多个ping,我应该使用while循环还是使用ping.Send(IP,timeOut)?当您想等待更长时间直到单个包失败时,timeOut非常有用。如果你想做三次尝试,你必须为或做一次
,而实际上
循环。@Patrickhoffman我想,我需要暂停。例如,我想尝试IP(比如)20秒。在所有的几秒钟内,如果它不可用,则意味着它处于脱机状态。如果某个包由于某种原因丢失,则您将等待20秒,而无果而终。如果您发送了20个包,然后返回1个、5个或20个包,这说明连接或服务的可靠性。你的答案在几秒钟内。@Patrick Hofman所以如果我想做多个ping,我应该使用while循环还是使用ping.Send(IP,timeOut)?当你想等待更长的时间直到单个包失败时,timeOut很有用。如果你想做三次尝试,你必须为或做一次
,而实际上
循环。@Patrickhoffman我想,我需要暂停。例如,我想尝试IP(比如)20秒。在所有的几秒钟内,如果它不可用,则意味着它处于脱机状态。如果某个包由于某种原因丢失,则您将等待20秒,而无果而终。如果你发送了20个包,然后又收到了1个、5个或20个,这说明了连接或服务的可靠性。嗯,这与5分钟前给出的答案是一样的。没必要再重复了。@Luccas感谢你的帖子。但请阅读stack中的“如何回答”部分。在第一篇帖子上线之前尝试回答。嗯,这与5分钟前给出的答案相同。没必要再重复了。@Luccas感谢你的帖子。但请阅读stack中的“如何回答”部分。在第一篇文章上线之前尝试回答。我担心的是什么假设
//按照正常的方式进行。
pingReply
告诉您的是,在最近的某个时刻,
ipAddress
正在响应ping请求。它不会告诉您在
ipAddress
上运行的其他服务可用,并且能够成功执行任何特定的处理工作(甚至将来的ping也不会成功)。再多的预检查也不能保护您不受网络和远程计算机不在您的代码控制之下的事实的影响,因此您无论如何都需要防御性地编写代码。@Damien_不相信者我同意。但这只是发送一些信息作为电子邮件提醒。例如,我将每一个小时检查一次IP是否正常工作,并且它总是失败,我们必须进行检查。我担心的是什么假设是正常的。
pingReply
告诉您的是,在最近的某个时刻,
ipAddress
正在响应ping请求。它不会告诉您在
ipAddress
上运行的其他服务可用,并且能够成功执行任何特定的处理工作(甚至将来的ping也不会成功)。再多的预检查也不能保护您不受网络和远程计算机不在您的代码控制之下的事实的影响,因此您无论如何都需要防御性地编写代码。@Damien_不相信者我同意。但这只是发送一些信息作为电子邮件提醒。例如,我将每一个小时检查一次IP是否正常工作,并且它总是失败,我们必须进行检查。