如何在Windows下获取IP地址

所有我已经有一个“socketfd”,我想知道如何使用它来检索本地IP地址。 在linux下,我可以做这样的事情(不完全正确):

struct ifreq ifr; ifr.ifr_addr.sa_family = AF_INET; ioctl(socketfd, SIOCGIFADDR, &ifr); char *address = inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr); 

但是,在Windows上,我如何实现相同的目标? (不使用MFC)非常感谢。

编辑:也许我的主机有多个IP地址,我想要一个“连接”与“socketfd”。

如果套接字已连接,则其上的getsockname()将使用套接字的本地名称填充struct sockaddr 。 这适用于两种操作系统(以及任何带有BSD套接字的东西)。

 WORD wVersionRequested; WSADATA wsaData; char name[255]; CString ip; PHOSTENT hostinfo; wVersionRequested = MAKEWORD( 2, 0 ); if ( WSAStartup( wVersionRequested, &wsaData ) == 0 ) { if( gethostname ( name, sizeof(name)) == 0) { if((hostinfo = gethostbyname(name)) != NULL) { ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list); } } WSACleanup( ); } 

#include