我想用GetAdaptersInfo函数得到电脑当前IP地址。
于是在MSDN中查到它的原型如下:
DWORD GetAdaptersInfo(
PIP_ADAPTER_INFO pAdapterInfo, // buffer to receive da
PULONG pOutBufLen // size of da
);
进一步查到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是什么区别啊?
************************************************************
.PIP_ADDR_STRING
你要确定这个类型是不是UNICODE的,我印象里面某库WinpCap,都是UNICODE字符串了
| ||
| #2楼 得分:0回复于:2008-11-27 12:46:58
|
评论