欢迎来到天天文库
浏览记录
ID:35236058
大小:76.50 KB
页数:7页
时间:2019-03-22
《获取主机网卡信息——实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、姓名学号班级年级指导教师西安财经学院信息学院《网络程序设计》实验报告实验名称获取主机网卡信息和子网掩码实验室实验楼402实验日期一、实验目的了解如何编写程序实现获取本地主机的网卡信息和子网掩码。二、实验要求获得本地计算机的网络信息,从而获得计算机的网卡名、网卡驱动程序、IP地址、子网掩码、物理地址、是否启用了DHCP、是否启用了WINS等网络信息。三、实验内容利用GetAdaptersInfo函数获取计算机的网络信息。四、实验原理在TCP/IP协议中,子网掩码是用来区分网络上的主机是否在同一网络段内的。假如某主机的IP地址为202.119.115.78,它的子网掩码为255.255.
2、255.0,将这两个数据做AND运算,则所得的值中非零的部分即为网络ID。运算步骤如下: (1)IP地址202.119.115.78的二进制值为11001010.01110111.01110011.01001110。 (2)子网掩码255.255.255.0的二进制值为11111111.11111111.11111111.00000000。(3)将两者做AND计算,其结果为11001010.01110111.01110011.00000000。(4)将结果转换成十进制后为202.119.115.0,其非零部分202.119.115就是网络ID,在IP地址中剩下的为主机ID,本例中
3、为78。这样如果另一台主机的IP地址为202.119.115.83,其子网掩码为255.255.255.0,则其网络ID为202.119.115,主机ID为83。因为这两台主机的网络ID均为202.119.115,因此这两台主机在同一网段内。函数GetAdaptersInfo可以获得本地计算机的网络信息,从而获得该计算机的网卡名、网卡驱动程序、IP地址、子网掩码、物理地址、是否启用了DHCP、是否启用了WINS等网络信息。注意该函数在头文件IpHlpApi.h中声明,库文件为IpHlpApi.lib。函数原型为: DWORDGetAdaptersInfo(PIP_ADAPTER_I
4、NFOpAdapterInfo,PULONGpOutBufLen);其中: 参数pAdapterInfo指向IP_ADAPTER_INFO结构链表缓冲区的指针;第6页/共7页 参数pOutBufLen指向一个ULONG变量的指针,该ULONG变量表示指向pAdapterInfo结构的大小。 参数中的IP_ADAPTER_INFO结构包含了本地计算机上一个特定网络适配卡的信息,该结构格式如下:typedefstruct_IP_ADAPTER_INFO{struct_IP_ADAPTER_INFO*Next;//指向链表中下一个适配器信息的指针DWORDComboIndex;//预
5、留值charAdapterName[MAX_ADAPTER_NAME_LENGTH+4];//使用ANSI字符串表示的适配器名称charDescription[MAX_ADAPTER_DESCRIPTION_LENGTH+4];//使用ANSI字符串表示的适配器描述UINTAddressLength;//适配器硬件地址以字节计算的长度BYTEAddress[MAX_ADAPTER_ADDRESS_LENGTH];//硬件地址以BYTE数组所表示DWORDIndex;//适配器索引UINTType;//适配器类型UINTDhcpEnabled;//指定这个适配器是否开启DHCPPIP_
6、ADDR_STRINGCurrentIpAddress;//预留值IP_ADDR_STRINGIpAddressList;//该适配器的IPv4地址链表IP_ADDR_STRINGGatewayList;//该适配器的网关IPv4地址链表IP_ADDR_STRINGDhcpServer;//该适配器的DHCP服务器的IPv4地址链表BOOLHaveWins;IP_ADDR_STRINGPrimaryWinsServer;IP_ADDR_STRINGSecondaryWinsServer;time_tLeaseObtained;time_tLeaseExpires;第6页/共7页}IP
7、_ADAPTER_INFO,*PIP_ADAPTER_INFO;其中成员变量的具体含义如下: Next:链表指针域,通过这个变量来遍历静态链表。 ComboIndex:保留未用。 AdapterName[MAX_ADAPTER_NAME_LENGTH+4]:网卡名。 Description[MAX_ADAPTER_DESCRIPTION_LENGTH+4]:对网卡的描述,实际上是驱动程序的名字。 AddressLength:物理地址的长度,通过该
此文档下载收益归作者所有