获取MAC地址和IP地址的程序设计.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
通信网络设计课程设计 题号:E1 设计日期20080125 PAGE 15 获取MAC地址和IP地址的程序设计 通信0402班 学号:0905040225 姓名:张玉海 指导老师: 王国才 【设计目标】 通过设计程序能获取本计算机的MAC地址和IP地址并显示。 【设计原理和方法】 本程序设计包含两个部分:一、获取本机IP地址;二、获取本机MAC地址。我是通过VB编程实现的。 其中,为了获取本机的IP地址,要使用WinSock库,WinSock API是Microsoft Windows的网络程序接口。应用程序在使用WinSock API之前,必须调用WSAstartup函数,只有调用函数成功返回(表示应用程序与WinSock库成功的简历其连接),应用程序才可以调用其他Windows Socketers .DLL中的函数。当程序将要结束时,又必须调用WSACleanup函数可以结束Windows Socketers .DLL的使用。WinSock规范定义了几个数据库的例程。其中我们要用到gethostname和gethostbyname两个函数来得到IP地址。gethostname可以获得主机名, gethostbyname函数能够从主机名得到对应的“主机”(由名字和地址标识),函数唯一的参数name就是前面调用gethostname函数得到的主机名,二返回值是一个hostent结构,他可以标识一个“主机”列表,hostent的最后一个分量hAddrList中,就可以得到与主机名对应的一个或多个IP地址,hAddrList是一个列表,通过它就可以得到所有的IP地址。 MAC地址也叫物理地址、硬件地址或链路地址,此程序设计的获取MAC地址是通过NetBIOS编程实现的。其中,要用到网络编程接口中的一个重要的概念,那就是LANA编号(LAN适配器编号,LANadaprer),每张物理网卡都会分配一个独一无二的LANA编号。要想调用NetBIOS API函数,需要链接系统的NETAPI.DLL文件NetBIOS API包含的内容其实分全场简单,因为实际上NetBIOS API只是一个函数NetBios ,在Visual Basic中可以这样引入: Private Declare Function Netbios Lib netapi32.dll (pncb As NET_CONTROL_BLOCK) As Byte 函数中唯一的参数pncb是一个指向某个网络控制块(NET_CONTROL_BLOCK)的指针,在那个NET_CONTROL_BLOCK结构中,包含了为执行一个NetBIOS命令,相应的NetBios函数需要用的的前部信息。NetBIOS提供了几个命令专门负责收集网络参数的命令,其中包括名字查找命令和适配器状态命令,利用适配器状态命令可以获得本地计算机及其LANA编号的有关信息,这就是查知其的MAC地址的一条可行路径。其中在网络适配器状态命令的ADAPTER_STATUS结构中我们最为关心的就是adapter_address字段,它标识的就是网卡的MAC地址。 【设计的功能】 用Visual Basic进行网络编程,通过使用WinSock API和NetBIOS API分别获取IP和MAC地址,并能够显示出来。 【程序框图】 程序流程图分为两部分,获取MAC地址的部分和获取IP地址的部分。 获取MAC地址的主程序流程图如下: 声明数据结构和常量,定义函数,声明netapi32.dll中的Netbios函数Call Netbios(NCB) 声明数据结构和常量,定义函数,声明netapi32.dll中的Netbios函数 Call Netbios(NCB),将LANA编号置0,分配一段内存空间pASTAT If pASTAT =0 147-147 内存分配失败 结束 Call Netbios(NCB)得到MAC地址并且显示出来 过程结束 退出 165-165 获取IP地址的主程序流程图如下: 声明数据结构和常量,定义函数,声明netapi32.dll中的Netbios函数定义函数变量 声明数据结构和常量,定义函数,声明netapi32.dll中的Netbios函数 定义函数变量 IF 90-90 IP地址为空 结束 通过主机名获取主机IP地址 If IP地址为空 101-101 Windows Sockets API函数调用错误,断开WinSock库 结束 将通过gethostbyname()函数得到的IP地址列表复制到一个临时字符串中 For 循环,i 从 1 到主机列表的长度 分别得到IP地址每一段的值,并用“.”隔开 得到GetIPAddre

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档