0

インターフェイス名を使用してipaddressを取得できるwinapiについて知りたいです。その Linux 版は以下のとおりです。

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <net/if.h>
#include <unistd.h>
#include <arpa/inet.h>
int main()
{
    int fd;
    struct ifreq ifr;
    char iface[] = "eth0";
    fd = socket(AF_INET, SOCK_DGRAM, 0);
    //Type of address to retrieve - IPv4 IP address
    ifr.ifr_addr.sa_family = AF_INET;
    //Copy the interface name in the ifreq structure
    strncpy(ifr.ifr_name , iface , IFNAMSIZ-1);
    ioctl(fd, SIOCGIFADDR, &ifr);
    close(fd);
    //display result
    printf("%s - %s\n" , iface , inet_ntoa(( (struct sockaddr_in *)&ifr.ifr_addr )->sin_addr) );
    return 0;
}

私は同様の機能(上記のコードと同様)を探していますが、 C++ のウィンドウ用です

4

4 に答える 4

1

GetAdaptersAddresses 関数のサンプルを参照してください。FriendlyName と FirstUnicastAddress は必要なフィールドです。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365915%28v=vs.85%29.aspx

関連項目: IPv4 アドレスからネットワーク インターフェイス名を取得する

于 2014-12-31T12:57:36.957 に答える
0

SIGARは、システム情報(CPU、RAM、DISK、およびネットワーク)を取得するためのクロスプラットフォームライブラリです。これにより、Mac / Windows / Linux上のすべてのネットワークインターフェイスを一覧表示し、必要なその他の情報を取得できます。

http://support.hyperic.com/display/SIGAR/Home

ライブラリ全体を使用したくない場合は、コードを調べて必要な部分だけを見つけることができると確信しています。

于 2012-08-05T14:40:15.367 に答える
0

最初にWinSockを初期化してから、gethostname、gethostbyname、およびinet_ntoa関数を使用する必要があります。次のリンクが役に立ちます。

于 2012-08-06T12:34:49.793 に答える
0

あなたのニーズに合わせて微調整できるかもしれません...

http://kodeyard.blogspot.in/2009/09/get-ip-address-in-cwindows.html

于 2012-08-05T15:31:12.987 に答える