频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

实例458 获取网卡的物理地址

作者: 明日科技 高春艳 李俊民 高彬彬 出处:人民邮电出版社  2008-06-27 15:02    砖    好    评论   进入论坛
阅读提示:《软件工程师典藏——Visual Basic程序开发范例宝典》一书所选实例覆盖了开发中的热点问题和关键问题。全书按实际应用进行分类,可以使读者在短时间内掌握更多有用的技术,快速提高编程水平。本文介绍了获取网卡的物理地址。

实例458  获取网卡的物理地址

 实例说明

网卡的物理地址,又称MAC地址。MAC地址是厂商生产的网卡的地址,每个网卡的地址是惟一的。MAC地址的作用是用来找到进行通信的计算机。所以,获取网卡的物理地址是很重要的。运行程序,单击“获取”按钮,即可获取网卡的物理地址。其实现效果如图15.31所示。

图12.5  对分组统计数据进行分析

 技术要点

使用NetBIOS网络编程接口来获取网卡的物理地址。NetBIOS API只有一个Netbios函数。下面是Netbios函数在网络编程接口的使用。

Netbios是Network Basic Input/Onput System(网络基本输入/输出系统)的缩写。该函数是与协议无关的网络编程接口。

函数声明:

Private Declare Function Netbios Lib "netapi32.dll" (pncb As NET_CONTROL_BLOCK) As Byte

参数说明:

·Pncb    指向某个网络控制块。

·返回值    若返回值为NRC_BADNCB,则网络控制块调用失败。否则,返回网络控制块卡的接口信息。

 实现过程

(1)新建一个标准工程,创建一个新窗体,默认名为Form1。在窗体上添加一个Label控件 ,一个TextBox控件 。

(2)在窗体上添加两个CommandButton控件 ,分别用于执行“获取”和“退出”操作。

(3)主要程序代码。

Option Explicit
Const NCBASTAT As Long = &H33  '获得网卡的状态
Const NCBNAMSZ As Long = 16  '程序名称长度
Const HEAP_ZERO_MEMORY As Long = &H8  '指定分配内存区首先初始化为0
Const HEAP_GENERATE_EXCEPTIONS As Long = &H4  '当函数执行失败时,系统将产生一个意外
Const NCBRESET As Long = &H32'重新设置网卡,当执行网卡控制块中的任何命令前必须重新设置网卡
Private Type NET_CONTROL_BLOCK
ncb_command    As Byte  '指定执行的命令代码
ncb_buffer     As Long  '指向信息缓冲区的指针
ncb_length     As Integer '指向消息缓冲区的大小
ncb_callname   As String * NCBNAMSZ  '指定控制程序的名称
ncb_name       As String * NCBNAMSZ  '指定当前程序的名称
ncb_lana_num   As Byte  '指定网卡数字编号
ncb_cmd_cplt   As Byte  '指定命令完成标志
End Type
Private Type ADAPTER_STATUS  '网卡状态信息数据结构,由Netbios函数返回
adapter_address(5) As Byte
adapter_type      As Byte
End Type
Private Type NAME_BUFFER
name        As String * NCBNAMSZ
name_num    As Integer
name_flags  As Integer
End Type
Private Type ASTAT
adapt          As ADAPTER_STATUS
NameBuff(30)   As NAME_BUFFER
End Type
Private Declare Function Netbios Lib "netapi32.dll" (pncb As NET_CONTROL_BLOCK) As Byte
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, _
ByVal hpvSource As Long, ByVal cbCopy As Long)
Private Declare Function GetProcessHeap Lib "kernel32" () As Long
Private Declare Function HeapAlloc Lib "kernel32" (ByVal hHeap As Long, _
ByVal dwFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function HeapFree Lib "kernel32" (ByVal hHeap As Long, _
ByVal dwFlags As Long, lpMem As Any) As Long
Private Sub Command1_Click()   '获得网卡的物理地址
Dim i As Integer
Dim pASTAT As Long
Dim NCB As NET_CONTROL_BLOCK
Dim AST As ASTAT
NCB.ncb_command = NCBRESET
Call Netbios(NCB)
NCB.ncb_callname = "*               "
NCB.ncb_command = NCBASTAT
NCB.ncb_lana_num = 0
NCB.ncb_length = Len(AST)
pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS _
Or HEAP_ZERO_MEMORY, NCB.ncb_length)
NCB.ncb_buffer = pASTAT
Call Netbios(NCB)
CopyMemory AST, NCB.ncb_buffer, Len(AST)
For i = 0 To 5    '显示网卡物理地址
Text1.Text = Text1.Text & Format$(Hex(AST.adapt.adapter_address(i)), "00") & "  "
Next i
HeapFree GetProcessHeap(), 0, pASTAT
End Sub

 举一反三

根据本实例,读者可以开发:

·根据用户的IP地址获得改IP地址的计算机名。

·获得局域网络的资源情况。

【责任编辑:杜书 TEL:(010)68476606】

回书目   上一节   
专题
Sun以10亿美元并购开源数据库厂商MySQL
Oracle数据库开发之PL/SQL基础应用
Oracle数据库开发基础教程
2006年数据库频道热点关注
数据库安全技术专题
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
面试官:我该怎样“战胜”你
面试官:我该怎样“战胜”你
2008年上半年全国软考最新试题、答案及点评
2008年上半年全国软考最新试..
无线局域网基本知识
无线局域网基本知识
· 无线局域网基本知识
· 家庭无线局域网
· CCNA认证考试Pass必备
· 龙芯要做中国的“奔腾”
· 2008年上半年IT新闻热..
· 2008年上半年IT技术图..
· IT工程师该不该考CCIE..
· 路由器设置与口令恢复
· 网络工程师职业规划与..
· 浏览器的战国时代
· 云计算时代来临
· 微软出价446亿美元收购..
· 无线路由器故障处理
· 无线重中之重:安全问题
· 脉冲无线电uwb专题
· 珊瑚虫QQ作者被判侵权..
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· 无线网状网(MESH)
· Windows远程桌面应用
· C#技术开发指南
· Apache技术专题
· Windows集群服务应用
· C#技术开发指南
· 文档格式标准开战 OOXM..
· 路由器设置与口令恢复
· Linux 集群技术专题
· PHP开发应用手册
· SOA 面向服务架构
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SQL Server入门到精通
SQL Server入门到精通
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· C#技术开发指南
· 三层交换技术专题
· Apache技术专题
· C#技术开发指南
· Windows远程桌面应用
· 企业数据恢复指南
· Windows集群服务应用
· 路由器设置与口令恢复
· Linux 集群技术专题
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 解析35岁技术人的价值..