请问怎么用GetAdaptersInfo函数得到当前IP地址?
我想用GetAdaptersInfo函数得到电脑当前IP地址。
于是在MSDN中查到它的原型如下:
DWORD GetAdaptersInfo(
PIP_ADAPTER_INFO pAdapterInfo, // buffer to receive data
PULONG pOutBufLen // size of data returned
);
进一步查到IP_ADAPTER_INFO结构如下:
typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
我用CurrentIpAddress输出当前IP,结果总是失败:
printf("%s", pAdapterInfo->CurrentIpAddress->IpAddress.String);
然后又试了用IpAddressList输出,结果是成功的:
printf("%s", pAdapterInfo->IpAddressList.IpAddress.String);
从名字来看,CurrentIpAddress就是当前IP了,
为什么用它来输出当前IP却会失败呢?
CurrentIpAddress和IpAddressList是什么区别啊?