#include <winsock2.h>
#include <Iphlpapi.h>
#include <iostream>
using namespace std;
#pragma comment(lib, "Iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")
int main()
{
FIXED_INFO *pFinxedInfo= NULL;
ULONG ulOutBufLen;
pFinxedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, sizeof( FIXED_INFO ) );
ulOutBufLen = sizeof( FIXED_INFO );
if( ERROR_BUFFER_OVERFLOW == GetNetworkParams( pFinxedInfo, &ulOutBufLen ) )
{
GlobalFree( pFinxedInfo );
pFinxedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, ulOutBufLen );
if (pFinxedInfo == NULL)
{
cout<<"Error allocating memory for FIXED_INFO"<<endl;
return 1;
}
}
if(GetNetworkParams(pFinxedInfo, &ulOutBufLen))
{
cout<<"GetNetworkParams is failed"<<endl;
return FALSE;
}
else
{
cout<<"Windows IP Configuration"<<endl;
cout<<endl;
cout<<"Host Name.......................:"<<pFinxedInfo->HostName<<endl;
cout<<"Primary DNS Suffix..............:"<<pFinxedInfo->DomainName<<endl;
cout<<"Node Type.......................:";
switch (pFinxedInfo->NodeType)
{
case BROADCAST_NODETYPE:
cout<<"Broadcast"<<endl;
break;
case PEER_TO_PEER_NODETYPE:
cout<<"Peer to peer"<<endl;
break;
case MIXED_NODETYPE:
cout<<"Mixed"<<endl;
break;
case HYBRID_NODETYPE:
cout<<"Hybrid"<<endl;
break;
default:
cout<<"Unknown"<<endl;
break;
}
cout<<"IP Routing Enabled..............:";
if (pFinxedInfo->EnableRouting)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
cout<<"WINS Proxy Enabled..............:";
if (pFinxedInfo->EnableProxy)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
cout<<endl;
IP_ADAPTER_INFO *IPInfo;
DWORD dwBufferSize=0;
IPInfo=(IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));
if(GetAdaptersInfo(IPInfo, &dwBufferSize)!=ERROR_BUFFER_OVERFLOW)
{
cout<<"GetNetworkParams is failed"<<endl;
return FALSE;
}
else
{
free(IPInfo);
IPInfo=(IP_ADAPTER_INFO *)malloc(dwBufferSize);
GetAdaptersInfo(IPInfo, &dwBufferSize);
while(IPInfo!=NULL)
{
cout<<"Ethernet adapter "<<IPInfo->Description<<endl;
cout<<endl;
cout<<"Connection-specific DNS Suffix..:"<<endl;
cout<<"Description.....................:"<<IPInfo->Description<<endl;
char szMacAddr[20];
sprintf_s(szMacAddr, 20, "%02X-%02X-%02X-%02X-%02X-%02X", IPInfo->Address[0], IPInfo->Address[1], IPInfo->Address[2],
IPInfo->Address[3], IPInfo->Address[4], IPInfo->Address[5]);
cout<<"Physical Address................:"<<szMacAddr<<endl;
cout<<"DHCP Enabled....................:";
if(IPInfo->DhcpEnabled!=0)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
cout<<"IP Address................:.....:"<<IPInfo->IpAddressList.IpAddress.String<<endl;
cout<<"Subnet Mask.....................:"<<IPInfo->IpAddressList.IpMask.String<<endl;
cout<<"Default Gateway.................:"<<IPInfo->GatewayList.IpAddress.String<<endl;
cout<<"DNS Servers.....................:"<<pFinxedInfo->DnsServerList.IpAddress.String<<endl;
cout<<" :"<<pFinxedInfo->DnsServerList.Next->IpAddress.String<<endl;
IPInfo=IPInfo->Next;
cout<<endl;
}
}
free(IPInfo);
getchar();
}
模拟 CMD命令下的ipconfig
最新推荐文章于 2024-09-18 00:00:54 发布