获取IP方法:1.获取网卡信息 2.读取注册表 3.通过主机名信息
char Name[255];//定义用于存放获得的主机名的变量
char *IP;//定义IP地址变量
CString strIP="";
PHOSTENT hostinfo;
if(gethostname (Name, sizeof(Name)) == 0)
{
//如果成功地将本地主机名存放入由name参数指定的缓冲区中
if((hostinfo = gethostbyname(Name)) != NULL)
{
//这是获取主机名,如果获得主机名成功的话,将返回一个指针,指向hostinfo,hostinfo
//为PHOSTENT型的变量,下面即将用到这个结构体
IP = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
strIP.Format(IP);
}
}
CString szMark;
PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter = NULL;
DWORD dwRetVal = 0;
pAdapterInfo = ( IP_ADAPTER_INFO * ) malloc( sizeof( IP_ADAPTER_INFO ) );
ULONG ulOutBufLen;
ulOutBufLen = sizeof(IP_ADAPTER_INFO);
// 第一次调用GetAdapterInfo获取ulOutBufLen大小
if (GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW)
{
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutBufLen);
}
if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
pAdapter = pAdapterInfo;
while (pAdapter)
{
szMark.Format(_T("%s"), CA2W(pAdapter-
>IpAddressList.IpMask.String));
pAdapter = pAdapter->Next;
}
}
将szMark值保存到listbox即可