[Win32]本地计算机网络信息的获取
print?// getNativeComputerNetInformation.cpp/*
在网络编程中,服务器端需要知道本机的IP;唯一标识一台机器的MAC地址;
功能的实现都非常简单,有五种函数可以直接调用:
1.用于获取本地网络适配器信息的函数:
DWORD GetAdaptersInfo( PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen );
2.用于获取本地主机名、域名和DNS服务器信息的函数:
DWORD GetNetworkParamsInfo(PFIXED_INFO pFixedInfo, PULONG pOutBufLen );
3.用于获取本地计算机网络接口数量的函数
DWORD GetNumberOfInterfaces(PDWORD pdwNumIf);
4.用于获取本地主机名、域名和DNS服务器信息的函数
DWORD GetInterfaceInfo(PIP_INTERFACE_INFO pIfTable, PULONG dwOutBufLen );
5.获取本地计算机IP地址表的函数
DWORD GetIpAddrTable(PMIB_IPADDRTABLE pIpAddrTable, PULONG pdwSize, BOOL bOrder );
*/
#include <stdio.h>
#include <WinSock2.h>
#include <iphlpapi.h>
#pragma comment(lib, "IPHLPAPI.lib")
#pragma comment(lib, "ws2_32.lib")
void main()
{
// 各类函数声明
int GetAdaptersInfoFunction(); // 获取本地网络适配器信息的函数
int GetNetworkParamsFunction(); // 获取本地主机名、域名和DNS服务器信息
int GetInterfacesFunction(); // 获取本地计算机网络接口的基本信息
int GetIpAddrTableFunction(); // 获取本地计算机的IP地址
// 各类函数调用
char choice;
do{
system("cls");
printf("1.获取本地网络适配器信息的函数 GetAdaptersInfoFunction();\n");
printf("2.获取本地主机名、域名和DNS服务器信息 GetNetworkParamsFunction();\n");
printf("3.获取本地计算机网络接口的基本信息 GetInterfacesFunction();\n");
printf("4.获取本地计算机的IP地址 GetIpAddrTableFunction();\n");
printf("0.退出程序\n");
printf("请输入需要调用的函数:");
scanf("%c", &choice);
printf("\n\n");
switch(choice){
case '0': break;
case '1': GetAdaptersInfoFunction(); break;
case '2': GetNetworkParamsFunction(); break;
case '3': GetInterfacesFunction(); break;
case '4': GetIpAddrTableFunction(); break;
default: break;
}
}while('0' != choice);
}
/**
* 用于获取本地网络适配器信息的函数:
* DWORD GetAdaptersInfo(
* _in PIP_ADAPTER_INFO pAdapterInfo; // 结构体保存获取到的网络适配器的信息
* _out PULONG pOutBufLen // 保存pAdapterInfo缓冲区的大小
* );
*
* 网络适配器的信息的结构体:网卡信息有:网卡名,网卡描述,MAC地址,网卡IP,网卡默认网关等
* typedef struct _IP_ADAPTER_INFO {
* struct _IP_ADAPTER_INFO* Next; // 指定网络适配器链表中的下一个网络适配器;由于一台电脑可能有多个网卡,所以是链表结构
* DWORD ComboIndex; // 预留变量
* char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4]; // 网络适配器的名称
* char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4]; // 网络适配器的描述信息
* UINT AddressLength; // 网络适配器MAC的长度
* BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]; // 网络适配器的MAC地址
* DWORD Index; // 网络适配器索引(重启计算机会改变的值)
* UINT Type; // 网络适配器的类型
* UINT DhcpEnabled; // 指定该网络适配器上是否启用了DHCP
* PIP_ADDR_STRING CurrentIpAddress; // 预留变量
* IP_ADDR_STRING IpAddressList; // 与此网络适配器上相关联的IP地址列表
* IP_ADDR_STRING GatewayList; // 该网络适配器上定义的IP地址的默认网关
* IP_ADDR_STRING DhcpServer; // 该网络适配器上定义的DHCP服务器的IP地址
* BOOL HaveWins; // 标明该网络适配器是否启用了WINS
* IP_ADDR_STRING PrimaryWinsServer; // 主WIN服务器的IP地址
* IP_ADDR_STRING SecondaryWinsServer; // 从WINS服务器的IP地址
* time_t LeaseObtained; // 当前的DHCP租借获
补充:软件开发 , C++ ,