#include
"stdafx.h"
#include
<stdlib.h>
#include
<stdio.h>
#include
"winsock2.h"
#include
"iphlpapi.h"
#include
<iostream>
#pragma
comment
(
lib
,
"IPHLPAPI.lib"
)
#pragma
comment
(
lib
,
"WS2_32.lib"
)
int
_tmain
(
int
argc
,
_TCHAR
*
argv
[])
{
IP_ADAPTER_INFO
*
pAdapterInfo
;
ULONG
ulOutBufLen
;
PIP_ADAPTER_INFO
pAdapter
;
//
获取本地适配器
pAdapterInfo
= (
IP_ADAPTER_INFO
*)
malloc
(
sizeof
(
IP_ADAPTER_INFO
));
ulOutBufLen
=
sizeof
(
IP_ADAPTER_INFO
);
if
(
GetAdaptersInfo
(
pAdapterInfo
, &
ulOutBufLen
) !=
ERROR_SUCCESS
)
{
free
(
pAdapterInfo
);
pAdapterInfo
= (
IP_ADAPTER_INFO
*)
malloc
(
ulOutBufLen
);
}
DWORD
dwRetVal
;
if
(
dwRetVal
=
GetAdaptersInfo
(
pAdapterInfo
, &
ulOutBufLen
) !=
ERROR_SUCCESS
)
std
::
cout
<<
"GetAdaptersInfo Error "
<<
dwRetVal
<<
"\n"
;
//
显示本地适配器
pAdapter
=
pAdapterInfo
;
while
(
pAdapter
)
{
std
::
cout
<<
"NetWork Adapter Name ___ "
<<
pAdapter
->
AdapterName
<<
"\n"
;
std
::
cout
<<
"NetWork Adapter Desc ___ "
<<
pAdapter
->
Description
<<
"\n"
;
std
::
cout
<<
"MAC is "
;
for
(
int
i
= 0;
i
<
pAdapter
->
AddressLength
; ++
i
)
{
if
(
i
== (
pAdapter
->
AddressLength
- 1))
printf
(
"%.2X\n"
, (
int
)
pAdapter
->
Address
[
i
] );
else
printf
(
"%.2X-"
, (
int
)
pAdapter
->
Address
[
i
] );
}
printf
(
"IP ADDRESS: \t\t%s\n"
,
pAdapter
->
IpAddressList
.
IpAddress
.
String
);
printf
(
" subnet Mask: \t\t%s\n"
,
pAdapter
->
IpAddressList
.
IpMask
.
String
);
printf
(
" default getway: \t\t%s\n"
,
pAdapter
->
GatewayList
.
IpAddress
.
String
);
printf
(
"*********************************************************************\n"
);
if
(
pAdapter
->
DhcpEnabled
)
{
printf
(
"
启用
DHCP: \t\t
是
\n "
);
printf
(
"DHCP
服务器
: \t\t%s\n"
,
pAdapter
->
DhcpServer
.
IpAddress
.
String
);
}
else
printf
(
"
启用
DHCP
:
\t\t
否
\n"
);
pAdapter
=
pAdapter
->
Next
;
}
if
(
pAdapterInfo
)
free
(
pAdapterInfo
);
printf
(
"\n\n"
);
system
(
"pause"
);
return
0;
}