【问题标题】:In SharpPCap How do I find the IP Address of the Device?在 SharpPCap 我如何找到设备的 IP 地址?
【发布时间】:2011-12-21 05:57:27
【问题描述】:

我正在使用 WinPCapDevice 并且已经对其进行了初始化。我只是希望能够从该设备获取 IP,但我找不到任何地方如何提取设备的 IP 地址。如果没有办法做到这一点,那么是否有另一种方法来获取 WinPCapDevice 的 IP 地址,以便我可以根据 IPAddresses 列表检查它?

这是我正在谈论的一小段代码。

        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
            }
        }

【问题讨论】:

    标签: c# sharppcap


    【解决方案1】:

    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 才能访问 Address 属性。

    希望,这会有所帮助。

    【讨论】:

    • 谢谢!这几乎正​​是我的问题所在,我注意到了 dev.Addresses,但我无法弄清楚如何在我的一生中使用它们。再次感谢您!
    • 由于某种原因,我无法获得成员 dev.Addresses。有什么想法吗?
    • @LuisDUrraca:“无法获得”是什么意思?地址集合是空的吗?
    • 其实我做错了。我试图在 LibPcapdevice 中查找 Address 而不是 LibPcabdevice[i].PcapAddress[i].Addr.ipAddress。现在一切都好。谢谢你的回答很有帮助。问题是我得到了一个奇怪的 IP 地址列表,但这肯定是另一个问题。
    猜你喜欢
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2012-08-16
    • 2011-09-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    相关资源
    最近更新 更多