ping超过超时,但报告成功
本文关键字:报告 成功 超时 ping | 更新日期: 2023-09-27 18:26:40
问题:
在我的代码中,我将ping的超时设置为100ms
new Ping().Send(item._deviceIP, 100, new byte[1])
它正确地ping并正确地回复,但IPStatus.TimeExceeded是"错误的",并在RTT>100ms 后报告成功
应该发生什么:
收到ping回复时,如果IPStatus是:
超时(>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
在所有情况下,您都需要检查PingReply的状态。当为超时指定非常小的数字时,即使超时毫秒已经过去,也可以接收Ping回复。
现在你要问一个难题——500ms、250ms、100ms、10ms,一个很小的数字是什么???很高兴你问。。请参阅这篇文章,不要回答那个问题。https://msdn.microsoft.com/en-us/library/ms144954%28v=vs.110%29.aspx