问题:
在我的代码中,我将ping的超时设置为100ms
new Ping().Send(item._deviceIP, 100, new byte[1])
正确ping并正确回复,但IPStatus.TimeExceeded是"错误"并且在RTT之后报告成功> 100ms的
会发生什么:
当收到pingreply时,如果IPStatus是:
TimeExceeded(> 100ms),_ devicePing的颜色设置为红色
成功(< = 100ms),_ devicePing的颜色应设为绿色
设置任何其他适当的颜色。
会发生什么:
即使RTT> 100ms
,任何ping回复都是回复报告成功类设备
{
public IPAddress _deviceIP;
public string _deviceMAC;
public string _deviceName;
public PingReply _devicePing ;
public Color _deviceStatus = Color.White;
public int _timeout_Count = 0;
public Color deviceStatus
{
get { return _deviceStatus; }
set { _deviceStatus = value; }
}
主程序代码
List<device> _alive = new List<device>();
foreach (device item in _clients)
{
PingReply _client_reply = new Ping().Send(item._deviceIP, 100, new byte[1]);
item._devicePing = _client_reply; (item object accepts a PingReply)
IPStatus _client_status = _client_reply.Status;
switch (_client_status)
{
case IPStatus.TimeExceeded:
{
item.deviceStatus = Color.Red;
}
break;
//rest of code
答案 0 :(得分:0)
在所有情况下,您都需要检查PingReply的状态。 When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.
现在你问一个棘手的问题 - 什么是一个非常小的数字500毫秒,250毫秒,100毫秒10毫秒,???很高兴你问过..看到这篇文章没有回答那个问题。 https://msdn.microsoft.com/en-us/library/ms144954%28v=vs.110%29.aspx