获取mac地址和ip地址的程序设计

获取mac地址和ip地址的程序设计

ID:9761012

大小:117.00 KB

页数:15页

时间:2018-05-08

获取mac地址和ip地址的程序设计_第1页
获取mac地址和ip地址的程序设计_第2页
获取mac地址和ip地址的程序设计_第3页
获取mac地址和ip地址的程序设计_第4页
获取mac地址和ip地址的程序设计_第5页
资源描述:

《获取mac地址和ip地址的程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、通信网络设计课程设计题号:E1设计日期:20080113----20080125获取MAC地址和IP地址的程序设计通信0402班学号:0905040225姓名:张玉海指导老师:王国才【设计目标】通过设计程序能获取本计算机的MAC地址和IP地址并显示。【设计原理和方法】本程序设计包含两个部分:一、获取本机IP地址;二、获取本机MAC地址。我是通过VB编程实现的。其中,为了获取本机的IP地址,要使用WinSock库,WinSockAPI是MicrosoftWindows的网络程序接口。应用程序在使用WinSockAPI之前,必须调用WSAstartup函数,只有

2、调用函数成功返回(表示应用程序与WinSock库成功的简历其连接),应用程序才可以调用其他WindowsSocketers.DLL中的函数。当程序将要结束时,又必须调用WSACleanup函数可以结束WindowsSocketers.DLL的使用。WinSock规范定义了几个数据库的例程。其中我们要用到gethostname和gethostbyname两个函数来得到IP地址。gethostname可以获得主机名,gethostbyname函数能够从主机名得到对应的“主机”(由名字和地址标识),函数唯一的参数name就是前面调用gethostname函数得到的

3、主机名,二返回值是一个hostent结构,他可以标识一个“主机”列表,hostent的最后一个分量hAddrList中,就可以得到与主机名对应的一个或多个IP地址,hAddrList是一个列表,通过它就可以得到所有的IP地址。MAC地址也叫物理地址、硬件地址或链路地址,此程序设计的获取MAC地址是通过NetBIOS编程实现的。其中,要用到网络编程接口中的一个重要的概念,那就是LANA编号(LAN适配器编号,LANadaprer),每张物理网卡都会分配一个独一无二的LANA编号。要想调用NetBIOSAPI函数,需要链接系统的NETAPI.DLL文件NetBI

4、OSAPI包含的内容其实分全场简单,因为实际上NetBIOSAPI只是一个函数NetBios,在VisualBasic中可以这样引入:PrivateDeclareFunctionNetbiosLib"netapi32.dll"(pncbAsNET_CONTROL_BLOCK)AsByte函数中唯一的参数pncb是一个指向某个网络控制块(NET_CONTROL_BLOCK)的指针,在那个NET_CONTROL_BLOCK结构中,包含了为执行一个NetBIOS命令,相应的NetBios函数需要用的的前部信息。NetBIOS提供了几个命令专门负责收集网络参数的命令

5、,其中包括名字查找命令和适配器状态命令,利用适配器状态命令可以获得本地计算机及其LANA编号的有关信息,这就是查知其的MAC地址的一条可行路径。其中在网络适配器状态命令的ADAPTER_STATUS结构中我们最为关心的就是adapter_address字段,它标识的就是网卡的MAC地址。15通信网络设计课程设计题号:E1设计日期:20080113----20080125【设计的功能】用VisualBasic进行网络编程,通过使用WinSockAPI和NetBIOSAPI分别获取IP和MAC地址,并能够显示出来。【程序框图】程序流程图分为两部分,获取MAC地址

6、的部分和获取IP地址的部分。获取MAC地址的主程序流程图如下:声明数据结构和常量,定义函数,声明netapi32.dll中的Netbios函数CallNetbios(NCB),将LANA编号置0,分配一段内存空间pASTATIfpASTAT=0147-147内存分配失败结束CallNetbios(NCB)得到MAC地址并且显示出来过程结束退出165-165获取IP地址的主程序流程图如下:15通信网络设计课程设计题号:E1设计日期:20080113----20080125声明数据结构和常量,定义函数,声明netapi32.dll中的Netbios函数定义函数变

7、量IF90-90IP地址为空结束通过主机名获取主机IP地址IfIP地址为空101-101WindowsSocketsAPI函数调用错误,断开WinSock库结束将通过gethostbyname()函数得到的IP地址列表复制到一个临时字符串中For循环,i从1到主机列表的长度分别得到IP地址每一段的值,并用“.”隔开得到GetIPAddress函数的返回值,就是经For循环后得到的值结束退出121-121IfSockets初始化失败将通过gethostbyname()函数得到的IP地址列表复制到一个临时字符串中得到GetIPAddress函数的返回值,就是经F

8、or循环后得到的值,断开WinSock库15通信网络

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。