在SharpPCap中如何找到设备的IP地址?

时间:2011-11-03 14:29:36

标签: c# sharppcap

我正在使用WinPCapDevice并已经初始化它。我只是希望能够从该设备获取IP,我无法在任何地方找到如何提取设备的IP地址。如果没有办法做到这一点,那么有另一种方法来获取WinPCapDevice的IP地址,以便我可以根据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 个答案:

答案 0 :(得分:4)

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。然后,您必须转换为WinPcapDeviceLibPcapLiveDeviceAirPcapDevice才能访问地址属性。

希望,这有帮助。