2016-12-14 14 views
0

Windows上のCでローカルマシンのIPアドレスを取得するにはどうすればよいですか?私は、次のコードで私のマシンのIPアドレスを取得することができませんでした:CでマシンのIPアドレスを検索しますか?

#include <ifaddrs.h> 
#include <stdio.h> 

int main() 
{ 
    struct ifaddrs *id; 
    int val; 
    val = getifaddrs(&id); 
    printf("Network Interface Name :- %s\n",id->ifa_name); 
    printf("Network Address of %s :- %d\n",id->ifa_name,id->ifa_addr); 
    printf("Network Data :- %d \n",id->ifa_data); 
    printf("Socket Data : -%c\n",id->ifa_addr->sa_data); 
    return 0; 
} 

コンパイル中に、私はエラーが直面しています:

を致命的なエラーC1083:「ネット/:オープンファイルを含めることはできませんif.h ':そのようなファイルやディレクトリはありません。

#include <net/if.h>は、Linuxでのみ利用可能であるため、使用できません。

+1

上記のコードはLinuxなどのオペレーティングシステム用です.Windowsで同じことを行うには、Microsoftの同等のAPIを見つけるためにMSDNを参照する必要があります。 –

+1

[Windows下でIPアドレスを取得する方法](IPアドレスを取得する方法)(IPアドレスを取得する方法)(0120-336-005) – Swanand

+0

[この質問はこちら] (http://stackoverflow.com/questions/122208/get-the-ip-address-of-local-computer)が役立ちます。 –

答えて

1

表示されたコードは、WindowsではなくLinux用に設計されているため、コンパイルされません。 Windowsには<net/if.h>というヘッダーはありません。

getifaddrs()は、ローカルインターフェイスアドレスのリンクリストを返します。しかし、getifaddrs()は、Windowsにはまったく存在しません(カスタムサードパーティの実装が見つからない限り)。

Windowsでは、Win32 GetAdaptersInfo()関数をXP以前、またはGetAdaptersAddresses()関数をVista以降で使用することができます。両方の関数は詳細なアダプタ情報のリンクされたリストを返します。

Cの例は、MSDNのドキュメントに記載されています。

-2

構造

struct ifaddrs *id; 

は、リンクされたリストです。ループしてアドレスの存在を確認する必要があります

if(id->fa_addr) 
    // print statements 
関連する問題