2011-11-03 154 views
3

我正在使用WinPCapDevice并已经初始化它。我只是希望能够从该设备获得IP,并且我无法找到任何地方如何提取设备的IP地址。如果没有办法做到这一点,那么有另一种方式获取WinPCapDevice的IP地址,以便我可以根据IPAddresses列表进行检查吗?在SharpPCap中如何找到设备的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 
      } 
     } 

回答

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

希望,这有助于。

+0

谢谢!这几乎就是我的问题所在,我注意到了dev.Addresses,但我无法弄清楚如何将它们用于我的生活。所以再次感谢你! –

+0

出于某种原因,我无法获得成员dev.Addresses。任何想法? –

+0

@LuisDUrraca:你什么意思是“无法得到”?地址集合是否为空? – Hans

相关问题