我知道 winpcap 库使人们能够获取有关已安装设备的高级信息...
鉴于计算机中的所有网络设备,我怎么知道其中哪一个有互联网连接?!
谢谢:)
我知道 winpcap 库使人们能够获取有关已安装设备的高级信息...
鉴于计算机中的所有网络设备,我怎么知道其中哪一个有互联网连接?!
谢谢:)
你通常不关心这个。通常你只是要求网络堆栈建立连接,而不用担心细节。
但是,每个“设备”都有自己的 IP 地址。您可以请求网络堆栈在建立连接时使用此 IP 地址。
现在,要确定哪些设备具有 Internet 连接,遍历所有设备,获取它们的 IP 地址,并尝试创建从该源 IP 到 Internet 上目标 IP 的连接。通常您已经知道这样的目标 IP,例如您公司的网络服务器。
GetAdaptersInfo() 将为您提供所有已安装网络适配器的列表,然后您可以在 GetIfEntry() 中使用该列表。后一个功能将告诉您适配器的运行状态,因此您至少可以判断适配器是否已插入实时集线器/交换机/路由器。
如果您对 IP 连接特别感兴趣,您可以查看是否为该接口配置了默认网关。不要忘记,如果你尝试这个,你可能必须同时支持 IPv6 和 IP4。
将 GetAdaptersInfo() 找到的网络适配器与 pcap_findalldevs() 找到的网络适配器相关联留给读者作为练习。我不记得细节,但它是相当明显的。