2017-02-19 61 views
0

我得到安装在我的电脑功能GetNetworkParam,GetInterfaceInfo和等上的所有网络适配器信息网络适配器的物理信息...如何获取关于在C++

现在在C++中,我想获取信息的物理网络适配器在我的系统中并不是所有的适配器(不是VMWare等),只是物理的,它是怎么做到的?

+0

你为什么要这样做?你想解决什么问题?您列出的API提供哪些数据可以告诉您有关接口的信息?例如,它们中的任何一个都会告诉你PCI总线的位置? –

+0

我很遗憾地通知您,在构成C++标准的1400多个页面中,没有提及任何称为“网络适配器”的东西。此外,没有通用的API来获取适用于全球各个操作系统的信息。如果您甚至没有意识到您需要指定您正在使用的操作系统的基本,基本的基本事实,那么在提出这样的问题时,无论您想要做什么,都无法完成去做吧。只要不断学习基本的C++几年,或者继续学习,就再试一次。 –

+0

欢迎使用堆栈溢出。请忍受住这个陌生世界的无情人! –

回答

1

正如Sam V.指出的那样,C++是一种对网络硬件一无所知的语言。然而,通过使用一些库或框架,您可以通过多种方式找到这些信息。这取决于你的一些要求。例如,找到一个完全便携的解决方案可能会很困难。

也就是说,我会使用Qt,因为它可以在许多流行的平台上移植,同时仍然包含impressive list of features。从官方文档看看下面的:

我用它来过滤在我的应用程序接口的一些示例代码:

QList<QNetworkInterface> interfaceList=QNetworkInterface::allInterfaces(); 
    for(QNetworkInterface iface:interfaceList){ 
     QNetworkInterface::InterfaceFlags flags=iface.flags(); 
     if(flags&QNetworkInterface::InterfaceFlag::IsLoopBack){ 
      continue; 
     } 
     if(flags&QNetworkInterface::InterfaceFlag::IsPointToPoint){ 
      continue; 
     } 
// Filter on other properties you want here 
    } 
+0

我很好奇知道cpp中没有这样的直接功能? –

+0

这是正确的Nidhin。在C++中,您可以使用诸如流等许多抽象,但C++中没有“本地”方式来枚举和/或获取有关网络硬件的信息。原因是C++可以用于许多不同的硬件,其中一些硬件没有“传统”网络范例。 –

+0

坦克你,但我想C++不QT, – Joo