2012-08-05 59 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将帮助你。