2017-02-19 1 views
0

でネットワークアダプタの物理に関する情報を取得するために、私は機能GetNetworkParam、GetInterfaceInfoとなどで自分のコンピュータにインストールされているすべてのネットワークアダプタについての情報を得る... C++で今どのようにC++

、私は情報の物理ネットワークアダプタを取得したいです私のシステムでは、すべてのアダプタ(ないVMWareなど)、ちょうど物理的、どのようにそれを行う?

+0

なぜあなたはこれをしたいですか?あなたが解決しようとしている問題は何ですか?リストされているAPIのどのような種類のデータは、インターフェイスについて教えてくれるのですか?たとえば、PCIバスの場所を示すものはありますか? –

+0

C++標準を構成する1400以上のページには、「ネットワークアダプタ」と呼ばれるものは何も言及されていません。さらに、世界中のすべてのオペレーティングシステムで動作するこの情報を取得する汎用APIはありません。あなたが使用しているオペレーティングシステムを指定する必要がある、基本的で基本的な事実を理解していない場合でも、このような質問をするときは、何をしようとしていても、それをするために。基本的なC++を数年以上学習し続けて、もう一度やり直してください。 –

+0

ようこそスタックオーバーフロー。この奇妙な世界に生息する無慈悲な人たちに感謝してください! –

答えて

1

Sam V.が指摘するように、C++はネットワークハードウェアについて何も知らない言語です。しかし、通常、いくつかのライブラリやフレームワークを使用して、その情報を見つけることができる多くの方法があります。しかし、それはあなたのいくつかの要件に依存します。たとえば、完全に移植可能なソリューションを見つけることはおそらく困難になるでしょう。

これは、多くの一般的なプラットフォームで移植可能で、まだimpressive list of featuresが含まれているので、Qtを使用します。私は自分のアプリケーションでのインターフェイスをフィルタリングするために使用する一部のコード例

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++はさまざまなハードウェア上で使用でき、その中には「従来の」ネットワークパラダイムを持たないものがあるからです。 –

+0

あなたはタンクですが、私はC++ではないQT、 – Joo