我正在使用 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
}
}
Run Code Online (Sandbox Code Playgroud)
在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");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当然,您也可以使用CaptureDeviceList该类来获取特定设备的列表。此列表中的每个设备都实现了ICaptureDevice. 然后,您必须强制转换为 a WinPcapDevice、 aLibPcapLiveDevice或 aAirPcapDevice才能访问 Address 属性。
希望这可以帮助。