|
@@ -10,6 +10,9 @@
|
|
|
#include <WinVer.h>
|
|
|
#pragma comment(lib,"version.lib")
|
|
|
#include "CritSection.h"
|
|
|
+
|
|
|
+#include <Iphlpapi.h>
|
|
|
+#pragma comment(lib,"Iphlpapi.lib")
|
|
|
|
|
|
namespace Global
|
|
|
{
|
|
@@ -1083,4 +1086,80 @@ namespace Global
|
|
|
_tsetlocale(LC_CTYPE, old_locale);
|
|
|
free(old_locale);
|
|
|
}
|
|
|
+
|
|
|
+ std::string GetLocalAddress(int nType)
|
|
|
+ {
|
|
|
+ std::string strAddress;
|
|
|
+ int nCardNo = 1;
|
|
|
+
|
|
|
+ PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
|
|
|
+
|
|
|
+ unsigned long stSize = sizeof(IP_ADAPTER_INFO);
|
|
|
+
|
|
|
+ int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
|
|
|
+
|
|
|
+ int netCardNum = 0;
|
|
|
+
|
|
|
+ int IPnumPerNetCard = 0;
|
|
|
+ if(ERROR_BUFFER_OVERFLOW == nRel)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ delete pIpAdapterInfo;
|
|
|
+
|
|
|
+ pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
|
|
|
+
|
|
|
+ nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(ERROR_SUCCESS == nRel)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ while (pIpAdapterInfo)
|
|
|
+ {
|
|
|
+
|
|
|
+ IP_ADDR_STRING*pIpAddrString = &(pIpAdapterInfo->IpAddressList);
|
|
|
+ if ( pIpAdapterInfo->Type == nType )
|
|
|
+ {
|
|
|
+ return pIpAddrString->IpAddress.String;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+#if 0
|
|
|
+ switch(pIpAdapterInfo->Type)
|
|
|
+ {
|
|
|
+ case MIB_IF_TYPE_OTHER:
|
|
|
+ case MIB_IF_TYPE_ETHERNET:
|
|
|
+ case MIB_IF_TYPE_TOKENRING:
|
|
|
+ case MIB_IF_TYPE_FDDI:
|
|
|
+ case MIB_IF_TYPE_PPP:
|
|
|
+ case MIB_IF_TYPE_LOOPBACK:
|
|
|
+ case MIB_IF_TYPE_SLIP:
|
|
|
+ {
|
|
|
+ strAddress = pIpAddrString->IpAddress.String;
|
|
|
+
|
|
|
+ if(std::string("0.0.0.0") == strAddress)
|
|
|
+ break;
|
|
|
+ std::cout<<_T("第")<<nCardNo<<_T("张网卡的IP地址是")<<strAddress<<std::endl;
|
|
|
+ nCardNo++;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ default:
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+#endif
|
|
|
+ pIpAdapterInfo = pIpAdapterInfo->Next;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (pIpAdapterInfo)
|
|
|
+ {
|
|
|
+ delete pIpAdapterInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ return std::string();
|
|
|
+ }
|
|
|
};
|