如何在SharpPCap中获取网络设备的友好名称
解决SharpPCap获取网络设备友好名称的问题
直接将ICaptureDevice强制转换为PCapInterface会失败,因为CaptureDeviceList返回的是对应平台的具体设备实现类(比如Windows下的WinPcapDevice、Linux下的LibPcapDevice),而非PCapInterface本身。根据SharpPCap版本不同,获取友好名称的方式分两种:
方法一:适用于SharpPCap v6及以上版本
新版本中,各平台设备类都实现了IPcapInterface接口,该接口包含FriendlyName属性,可通过类型判断安全转换:
CaptureDeviceList deviceList = CaptureDeviceList.Instance; foreach (var device in deviceList) { if (device is IPcapInterface pcapInterface) { Console.WriteLine($"设备名: {device.Name}, 描述: {device.Description}, 友好名称: {pcapInterface.FriendlyName}"); } else { Console.WriteLine($"设备名: {device.Name}, 描述: {device.Description}"); } }
方法二:适用于SharpPCap v5及以下旧版本
旧版本中,Windows平台的设备类WinPcapDevice直接自带FriendlyName属性,需针对性判断类型:
CaptureDeviceList deviceList = CaptureDeviceList.Instance; foreach (ICaptureDevice device in deviceList) { if (device is WinPcapDevice winDevice) { Console.WriteLine($"设备名: {device.Name}, 描述: {device.Description}, 友好名称: {winDevice.FriendlyName}"); } else { Console.WriteLine($"设备名: {device.Name}, 描述: {device.Description}"); } }
内容的提问来源于stack exchange,提问作者shinyball4999
相关产品推荐
相关产品推荐

