Если у вас правильно администрируемая среда, вы должны использовать имена.Под правильно управляемой средой я имею в виду, прежде всего, наличие DNS-сервера в вашей локальной сети.
У меня что-то похожее работает, что пингует промышленные устройства Ethernet.Это статически назначенные адреса, поэтому они не регистрируются в DNS, как DHCP-клиент.Я попросил нашего администратора DNS создать записи для них, чтобы я мог просто использовать их имя.В конечном итоге вам будет лучше, так как через два года вы не будете иметь ни малейшего представления о том, на что ссылался этот mac-адрес в вашем списке.При создании имен вы можете сделать их настолько описательными, насколько это необходимо.
РЕДАКТИРОВАТЬ: вот функция, которая принимает имя в виде строки, ищет связанный IP-адрес из DNS, а затем проверяет связь.Если разрешение DNS не удается или пинг не сообщает об успехе, функция возвращает false.В противном случае он возвращает истину.Вы также должны зарегистрировать исключения для устранения неполадок позже, кстати.
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;