获取子网掩码问题 谁有获取子网掩码的例子,提供个,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #include <Iphlpapi.h> #pragma comment(lib, "Iphlpapi.lib") // Get and print information from IP_ADDR_STRING structure. void PrintIPs(PIP_ADDR_STRING pCurIP, bool bFullInf, CString &strADDRList) { strADDRList = ""; if (pCurIP->IpAddress.String[0] == '\0') { strADDRList = "not presented\n\n"; return; } CString strTemp; if (bFullInf) { do { strTemp.Format("IP Addr:[%s] Subnet Mask:[%s]\r\n", pCurIP->IpAddress.String, pCurIP->IpMask.String[0] == '\0' ? "no" : pCurIP->IpMask.String); strADDRList += strTemp; } while ((pCurIP = pCurIP->Next) != NULL); } else { do { strTemp.Format("%s ", pCurIP->IpAddress.String); strADDRList += strTemp; } while ((pCurIP = pCurIP->Next) != NULL); } } 最简单的办法是用windows命令:ipconfig /all ->d:\1111.txt 就可以直接输出到一个文本文件,再解析这个文件就可以了。在VC里可以用ShellExecute调用windows命令 参考:http://topic.csdn.net/t/20030310/10/1510668.html GetAdaptersInfo啊Client Requires Windows XP, Windows 2000 Professional, Windows Me, or Windows 98. Declared in Iphlpapi.h.Link to Iphlpapi.lib.Requires Iphlpapi.dll.PIP_ADAPTER_INFO pAdapterInfo;PIP_ADAPTER_INFO pAdapter = NULL;DWORD dwRetVal = 0;pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);// Make an initial call to GetAdaptersInfo to get// the necessary size into the ulOutBufLen variableif (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) { printf("\tAdapter Name: \t%s\n", pAdapter->AdapterName); printf("\tAdapter Desc: \t%s\n", pAdapter->Description); printf("\tAdapter Addr: \t%ld\n", pAdapter->Address); printf("\tIP Address: \t%s\n", pAdapter->IpAddressList.IpAddress.String); printf("\tIP Mask: \t%s\n", pAdapter->IpAddressList.IpMask.String); printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String); printf("\t***\n"); if (pAdapter->DhcpEnabled) { printf("\tDHCP Enabled: Yes\n"); printf("\t\tDHCP Server: \t%s\n", pAdapter->DhcpServer.IpAddress.String); printf("\tLease Obtained: %ld\n", pAdapter->LeaseObtained); } else printf("\tDHCP Enabled: No\n"); if (pAdapter->HaveWins) { printf("\tHave Wins: Yes\n"); printf("\t\tPrimary Wins Server: \t%s\n", pAdapter->PrimaryWinsServer.IpAddress.String); printf("\t\tSecondary Wins Server: \t%s\n", pAdapter->SecondaryWinsServer.IpAddress.String); } else printf("\tHave Wins: No\n"); pAdapter = pAdapter->Next; }}else { printf("Call to GetAdaptersInfo failed.\n");} ON_BN_CLICKED(IDC_BUTTON, OnBnClickedButton)类型转换错误 error LNK2001: unresolved external symbol _CLSID_URL_SRC_FILTER VC.net 错误 VS2008按MSDN的说法也没有找到右击类的添加事件向导 得到分割视图的指针,出现运行是错误,在线等~ 关于PlaySound的一个问题 问个问题? 数据存储的先后顺序的问题,在线等,急!!! 请教关于一个socket和多线程的服务器端问题。 νM2P???WMV 如何释放其它进程创建的mutex 小问题求解
#include <Iphlpapi.h>
#pragma comment(lib, "Iphlpapi.lib") // Get and print information from IP_ADDR_STRING structure.
void PrintIPs(PIP_ADDR_STRING pCurIP, bool bFullInf, CString &strADDRList)
{
strADDRList = "";
if (pCurIP->IpAddress.String[0] == '\0')
{
strADDRList = "not presented\n\n";
return;
}
CString strTemp;
if (bFullInf)
{
do
{
strTemp.Format("IP Addr:[%s] Subnet Mask:[%s]\r\n",
pCurIP->IpAddress.String,
pCurIP->IpMask.String[0] == '\0' ? "no" : pCurIP->IpMask.String);
strADDRList += strTemp;
} while ((pCurIP = pCurIP->Next) != NULL);
}
else
{
do
{
strTemp.Format("%s ", pCurIP->IpAddress.String);
strADDRList += strTemp;
} while ((pCurIP = pCurIP->Next) != NULL);
} }
ipconfig /all ->d:\1111.txt 就可以直接输出到一个文本文件,再解析这个文件就可以了。在VC里可以用ShellExecute调用windows命令
Declared in Iphlpapi.h.
Link to Iphlpapi.lib.
Requires Iphlpapi.dll.
PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter = NULL;
DWORD dwRetVal = 0;pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );
ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
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) {
printf("\tAdapter Name: \t%s\n", pAdapter->AdapterName);
printf("\tAdapter Desc: \t%s\n", pAdapter->Description);
printf("\tAdapter Addr: \t%ld\n", pAdapter->Address);
printf("\tIP Address: \t%s\n", pAdapter->IpAddressList.IpAddress.String);
printf("\tIP Mask: \t%s\n", pAdapter->IpAddressList.IpMask.String); printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);
printf("\t***\n");
if (pAdapter->DhcpEnabled) {
printf("\tDHCP Enabled: Yes\n");
printf("\t\tDHCP Server: \t%s\n", pAdapter->DhcpServer.IpAddress.String);
printf("\tLease Obtained: %ld\n", pAdapter->LeaseObtained);
}
else
printf("\tDHCP Enabled: No\n");
if (pAdapter->HaveWins) {
printf("\tHave Wins: Yes\n");
printf("\t\tPrimary Wins Server: \t%s\n", pAdapter->PrimaryWinsServer.IpAddress.String);
printf("\t\tSecondary Wins Server: \t%s\n", pAdapter->SecondaryWinsServer.IpAddress.String);
}
else
printf("\tHave Wins: No\n");
pAdapter = pAdapter->Next;
}
}
else {
printf("Call to GetAdaptersInfo failed.\n");
}