2012-08-05 94 views
0

我想知道,winapi從中可以使用接口名稱獲取ipaddress。其中的Linux版本如下。要從Windows中的接口名稱獲取IP地址

#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++尋找視窗類似的功能(如上面的代碼),但是

回答

0

SIGAR是用於獲取系統信息(CPU,RAM,磁盤和網絡)的跨平臺庫。它將允許您列出Mac/Windows/Linux上的所有網絡接口,並獲取您可能需要的任何其他信息。

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

如果你不想使用整個圖書館,我相信你可以檢查代碼找到你需要的作品。

0

你必須首先初始化的WinSock,然後才使用gethostname,和的gethostbyname功能INET_NTOA。以下link將幫助你。