В SharpPCap Как мне найти IP-адрес устройства? - PullRequest
3 голосов
/ 03 ноября 2011

Я использую WinPCapDevice и уже инициализировал его. Я просто хочу получить IP-адрес от этого устройства, и я нигде не могу найти, как извлечь IP-адрес устройства. Если нет способа сделать это, есть ли другой способ получить IP-адрес WinPCapDevice, чтобы я мог проверить его по списку IP-адресов?

Вот небольшой фрагмент кода, о котором я говорю.

        IPHostEntry host;
        host = Dns.GetHostEntry(Dns.GetHostName());

        foreach (IPAddress ip in host.AddressList)
        {
            if (ip.AddressFamily.ToString() == "InterNetwork")
            {

                localIPAddress = ip.ToString();
                //Want to check if my WinPCapDevice device's IP is equal to ip
            }
        }

1 Ответ

4 голосов
/ 04 ноября 2011

Класс WinPcapDevice содержит свойство с именем Addresses.Это свойство содержит все адреса (IP), связанные с устройством:

string localIPAddress = "...";

WinPcapDeviceList devices = WinPcapDeviceList.Instance;

foreach(WinPcapDevice dev in devices)
{
  Console.Out.WriteLine("{0}", dev.Description);

  foreach(PcapAddress addr in dev.Addresses)
  {
    if(addr.Addr != null && addr.Addr.ipAddress != null)
    {
      Console.Out.WriteLine(addr.Addr.ipAddress);

      if(localIPAddress == addr.Addr.ipAddress.ToString())
      {
        Console.Out.WriteLine("Capture device found");           
      }
    }
  }
}

Конечно, вы также можете использовать класс CaptureDeviceList для получения списка определенных устройств.Каждое устройство в этом списке реализует ICaptureDevice.Затем вам нужно привести к WinPcapDevice, LibPcapLiveDevice или AirPcapDevice, чтобы получить доступ к свойству Address.

Надеюсь, это поможет.

...