2012-02-25 15 views
3

libpcapを使ってlinuxのインターフェースのIPアドレスを取得する方法はありますか? Get IP address of an interface on Linuxpcapを使ってlinuxのインターフェースのipアドレスを取得する

をそれはPCAPを使用していない:

私はこれを発見しました。 PCAPの例でも

thisのようなものは、あなたのIPを取得するべきであるといわれているが、それはあなたのネットワークアドレスを与える

PCAPソリューションを持っていいだろうが、そこではない場合、私が使用します最初のリンクのコード。 pcap_findalldevs機能を使用して

おかげ

+2

私はそれを得ることはありません。なぜあなたはpcapでそれをしたいのですか? –

+0

私は好奇心が強いので、この例(と他のもの)は<私たちのIPアドレス>と書かれていますが、実際に彼らにネットワークアドレスが与えられています。それから(私のような)学ぶことは混乱するでしょう。 しかし、私は最初のリンクからコードを使用しても構いません。私が言ったように、私のためにだけでなく、pcapを学習する他の人たちのために、そのような解決策をとることはいいでしょう。 – Jan

答えて

9

sudo ./pcap

#include <pcap/pcap.h> 
#include <arpa/inet.h> 

static char errbuf[PCAP_ERRBUF_SIZE]; 

int main() { 
    pcap_if_t *alldevs; 
    int status = pcap_findalldevs(&alldevs, errbuf); 
    if(status != 0) { 
     printf("%s\n", errbuf); 
     return 1; 
    } 

    for(pcap_if_t *d=alldevs; d!=NULL; d=d->next) { 
     printf("%s:", d->name); 
     for(pcap_addr_t *a=d->addresses; a!=NULL; a=a->next) { 
      if(a->addr->sa_family == AF_INET) 
       printf(" %s", inet_ntoa(((struct sockaddr_in*)a->addr)->sin_addr)); 
     } 
     printf("\n"); 
    } 

    pcap_freealldevs(alldevs); 
    return 0; 
} 

出力:

eth0: 192.168.2.1 
usbmon1: 
usbmon2: 
usbmon3: 
usbmon4: 
usbmon5: 
any: 
lo: 127.0.0.1 
+0

ありがとうございます。私はこの方法で解決したコンパイラに問題がありました:http://stackoverflow.com/questions/24881/how-do-i-fix-for-loop-initial-declaration-used-outside-c99-mode-gcc -エラー – tremendows

関連する問題