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

我正在使用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 } } 

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属性。

希望这可以帮助。