2009-10-13 3 views
1

Есть ли способ обнаружить конфликт IP-сообщений? Я буду использовать это в потоке в моей программе.обнаружить конфликт ip, используя C#

+2

Я честно понятия не имею, о чем вы просите. Можете ли вы описать проблему более подробно? –

+0

Похоже, он хочет обработать системное событие, когда ваш IP-адрес конфликтует с другим пользователем в том же сегменте. Если есть событие, оно, вероятно, спрятано на земле WMI. –

ответ

2

Если ваша проблема заключается в обнаружении окна оповещений о наличии дублирующего IP-адреса в сети, я предлагаю вам использовать API для перечисления всех окон и просмотра наличия окна предупреждения. Вам может помочь инструмент Visual Studio Spy ++, чтобы увидеть характерность окна.

0

Вопрос не является точным и старым, но я дам ему все равно, потому что я задавался вопросом, что я могу делать с такими проблемами, так как я пишу приложение, которое манипулирует IP-адресами на ПК, чтобы запускать приложения которые зависят от конкретных адресов. Если у кого-то еще есть тот же вопрос, я предлагаю попытаться избежать конфликтов в первую очередь. Дело в том, что настройка IP-адреса является административной задачей и должна выполняться только «свободными» людьми, которые знают, что они делают. Если вы устанавливаете IP-адреса по коду, это ваша задача в качестве разработчика, чтобы проверить, действительно ли установленный адрес действителен и еще не известен в сети.

Первое: DNS запрос, если этот адрес принадлежит хозяину, кроме того, приложение работает на

Второй: Если DNS не знает адрес, отправить Ping запросы на адрес.

См: Check Local Ip Address

public static bool IsLocalIpAddress(string host) 
    { 
    try 
    { 
    // get host IP addresses 
    IPAddress[] hostIPs = Dns.GetHostAddresses(host); 
    // get local IP addresses 
    IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName()); 

    // test if any host IP equals to any local IP or to localhost 
    foreach (IPAddress hostIP in hostIPs) 
    { 
     // is localhost 
     if (IPAddress.IsLoopback(hostIP)) return true; 
      // is local address 
      foreach (IPAddress localIP in localIPs) 
      { 
       if (hostIP.Equals(localIP)) return true; 
      } 
     } 
    } 
    catch { } 
    return false; 
} 

Если вы хотите, чтобы "слушать" для конфликтов, WMI и EventLog это путь. EventLog - это в первую очередь первое место, где возникают такие конфликты, и его легко контролировать.

+0

_ [RFC 5227, обнаружение конфликтов IPv4] (https://tools.ietf.org/html/rfc5227) _, среди прочих, охватывает это. –

Смежные вопросы