,我正確地設置一個ping的超時時間爲100ms
new Ping().Send(item._deviceIP, 100, new byte[1])
其中ping和正確回答,但IPStatus。 TimeExceeded是 「錯誤的」,並報告成功後RTT是> 100ms的
應該發生什麼:
recieving一個pingreply時,如果IPStatus是:
TimeExceeded(> 100毫秒),_devicePing應該有一個顏色設置爲紅色
成功(< = 100毫秒),_devicePing應該有一個顏色設置爲綠色
任何其他適當的顏色設置。
會發生什麼:
任何ping回覆這是一個回覆報告成功即使有RTT> 100ms的
類設備
{
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
我知道這件事,但這是如何解決我的問題?或者說,我應該做我自己的TimeElapsed檢查,因爲這是它歸結爲什麼? – KGCybeX
@KGCybeX - 您需要執行自己的時間檢查。您可以檢查pingreply是否>超時=失敗。我不知道有什麼辦法可以讓.NET庫的行爲與它的行爲不同 - 所以你需要解決它或者自己動手。解決方法更容易。 – Ken