18.2.1 获取网卡地址

2013-10-07 00:12:43 · 作者: · 浏览: 100

  

| 18.2 | 局域网技术

局域网是由在物理上彼此相隔不远的一组台式计算机和其他设备,以允许用户意见相互通信和共享计算机资源的方式互连在一起的系统,其特点是传输速率高、误码率低,具有较高的稳定性和可扩充性。本节将介绍有关局域网的相关知识。

18.2.1  获取网卡地址

在实际的应用程序中,经常需要在程序运行时获取MAC地址作为某种标识。MAC地址是网络适配器的物理地址,网络适配器又称网卡。而MAC地址能够标识网络中一台惟一的计算机,所以网卡的物理地址是惟一的。如果想获得网卡地址可以通过调用Netbios函数来实现。
下面以一个实例来说明如何获取网卡地址,具体操作步骤如下。
ch1801实例位置:mr\18\sl\01 
(1)新建一个基于对话框的应用程序,设计对话框资源如图18.1所示。
(2)处理“获取”按钮的单击事件,在程序中调用Netbios函数获取网卡地址。

void CGetMACDlg::OnGetmac() 
{
NCB nInfo;
memset(&nInfo,0,sizeof(NCB));
nInfo.ncb_command = NCBRESET;
nInfo.ncb_lana_num = 0;
Netbios(&nInfo);

ADAPTER_INFO AdaINfo;

//初始化NetBIOS
memset(&nInfo,0,sizeof(NCB));
nInfo.ncb_command = NCBASTAT;
nInfo.ncb_lana_num = 0;
nInfo.ncb_buffer = (unsigned char*)&AdaINfo;
nInfo.ncb_length = sizeof(ADAPTER_INFO);
strncpy( (char*)nInfo.ncb_callname,"*",NCBNAMSZ);

Netbios(&nInfo);   

CString macAddr;
macAddr.Format("%02X%02X-%02X%02X-%02X%02X",AdaINfo.nStatus.adapter_address[0],
AdaINfo.nStatus.adapter_address[1],
AdaINfo.nStatus.adapter_address[2],
AdaINfo.nStatus.adapter_address[3],
AdaINfo.nStatus.adapter_address[4],
AdaINfo.nStatus.adapter_address[5]
);
m_MacAddr.SetWindowText(macAddr);
}


(3)运行程序,效果如图18.2所示。
       
图18.1  对话框资源设计窗口                   

图18.2  获取网卡地址

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

回书目   上一节   下一节