2011-11-03 153 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

相關問題