如果你有一個適當的管理環境,你應該使用名字。通過適當的管理環境,我主要是說你的本地網絡上有一臺DNS服務器。
我有類似的運行ping工業以太網設備。這些是靜態分配的地址,因此它們不會像DNS客戶端那樣向DNS註冊自己。我讓我們的DNS管理員爲他們創建記錄,以便我可以使用他們的名字。從長遠來看,從現在開始兩年後,你將不知道該列表中的mac地址是指什麼。創建名稱時,可以根據需要將它們設置爲描述性的。
編輯:下面是需要一個名稱作爲字符串函數,從DNS查找相關的IP,然後可以Ping。如果DNS解析失敗或者ping不報告成功,則該函數返回false。否則返回true。稍後,您還應該記錄例外情況以進行故障排除。
public bool Check(string Name)
{
//try dns resolution, if fails, quit reporting error
IPAddress[] addresses = null;
try
{
addresses = Dns.GetHostAddresses(Name);
}
catch (SocketException)
{
return false;
}
//ping remote address
PingReply reply = ping.Send(addresses[0]);
switch (reply.Status)
{
case IPStatus.Success:
return true;
break;
default:
return false;
break;
}
}
編輯2:這裏是我在這個項目中使用的命名空間。不確定究竟在哪裏,但添加這三個將會使一切順利。
using System.Net.NetworkInformation;
using System.Net;
using System.Net.Sockets;
那麼我要ping的服務器確實有靜態名稱。你如何基於已保存的名稱列表進行ping操作? – Kulahan
我添加了一個函數,它將ping從DNS解析返回的第一個可用地址。 HTH! –
哇,太棒了!但出於好奇,你用什麼庫來實現這個目標? VS不識別IPAddress,DNS.GetHostAddress(Name)或(SocketException)。 – Kulahan