设为首页 加入收藏

TOP

1.1.4 小试牛刀--编程实现获取MAC地址(1)
2013-10-07 15:51:47 来源: 作者: 【 】 浏览:89
Tags:1.1.4 小试牛刀 编程 实现 获取 MAC 地址

1.1.4  小试牛刀--编程(www.cppentry.com)实现获取MAC地址(1)

实例功能 使用Visual C++(www.cppentry.com)开发一个FTP传输系统

源码路径 光盘\yuanma\1\FTP

本实例的目的是,使用Visual C++(www.cppentry.com) 6.0开发一个获取当前机器MAC地址的程序。

1. 选择开发工具

Visual C++(www.cppentry.com)是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++(www.cppentry.com) 1.0以来,不断有其新版本问世,随后微软又推出了.NET系列,添加了很多网络功能,但是它的应用有一定的局限性。Visual C++(www.cppentry.com)已成为专业程序员进行软件开发的首选工具,其中,Visual C++(www.cppentry.com) 6.0是其中比较成熟的一个版本,也是最常用的一个版本。

2. 设计MFC窗体

使用Visual C++(www.cppentry.com) 6.0创建一个MFC项目后,根据本实例的需要,我们设计3个窗体,它们分别是IDD_ABOUTBOX(见图1-6)、IDD_GETNETSETTING_DIALOG(见图1-7)和IDD_CARDINFO(见图1-8)。

 
图1-6  IDD_ABOUTBOX窗体
 
图1-7  IDD_GETNETSETTING_DIALOG窗体
 
图1-8  IDD_CARDINFO窗体

3. 具体编码

设计好窗体之后,接下来开始讲解具体的编码过程。

(1) 在文件ClassNetSetting.h中,定义类ClassNetSetting,根据不同的操作系统获取存储网卡的MAC地址的结构。具体代码如下:

  1. //操作系统类型  
  2. enum Win32Type {  
  3. Unknow,  
  4. Win32s,  
  5. Windows9X,  
  6. WinNT3,  
  7. WinNT4orHigher  
  8. };  
  9.  
  10. typedef struct tagASTAT   
  11. {   
  12. ADAPTER_STATUS adapt;   
  13. NAME_BUFFER  NameBuff[30];   
  14. } ASTAT, *LPASTAT;   
  15.  
  16. //存储网卡的MAC地址的结构  
  17. typedef struct tagMAC_ADDRESS  
  18. {  
  19. BYTE b1,b2,b3,b4,b5,b6;  
  20. } MAC_ADDRESS, *LPMAC_ADDRESS;  
  21.  
  22. //网卡信息的数据结构,包括记录网卡的厂商及型号,与之绑定的IP地址,网关,  
  23. //DNS序列,子网掩码和物理地址  
  24. typedef struct tagNET_CARD  
  25. {  
  26. TCHAR szDescription[256];  
  27. BYTE  szMacAddr[6];  
  28. TCHAR szGateWay[128];  
  29. TCHAR szIpAddress[128];  
  30. TCHAR szIpMask[128];  
  31. TCHAR szDNSNameServer[128];  
  32. } NET_CARD, *LPNET_CARD;  
  33.  
  34. class ClassNetSetting    
  35. {  
  36. public:  
  37. void ProcessMultiString(LPTSTR lpszString, DWORD dwSize);  
  38. UCHAR GetAddressByIndex(int lana_num, ASTAT &Adapter);  
  39. BOOL GetSettingOfWinNT();  
  40. int GetMacAddress(LPMAC_ADDRESS pMacAddr);  
  41. BOOL GetSetting();  
  42. ClassNetSetting();  
  43. virtual ~ClassNetSetting();  
  44. public:  
  45. BOOL GetSettingOfWin9X();  
  46. Win32Type GetSystemType();  
  47. int         m_TotalNetCards; //系统的网卡数  
  48. TCHAR       m_szDomain[16]; //域名  
  49. TCHAR       m_szHostName[16]; //主机名  
  50. int         m_IPEnableRouter; //是否允许IP路由: 0-不允许, 1-允许, 2-未知  
  51. int         m_EnableDNS; //是否允许DNS解析: 0-不允许, 1-允许, 2-未知  
  52. NET_CARD        m_Cards[MAX_CARD]; //默认的最大网卡数是10  
  53. Win32Type       m_SystemType; //操作系统类型  
  54. MAC_ADDRESS     m_MacAddr[MAX_CARD]; //允许10个网卡  
  55.  
  56. };  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.1.3 NetBIOS编程基础(3) 下一篇1.1.4 小试牛刀--编程实现获取MAC..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)
·SQL CREATE INDEX 语 (2025-12-25 01:21:45)
·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)