C#如何获得设备Mac地址之欧阳治创编Word下载.docx

上传人:b****6 文档编号:16934225 上传时间:2022-11-27 格式:DOCX 页数:6 大小:17.12KB
下载 相关 举报
C#如何获得设备Mac地址之欧阳治创编Word下载.docx_第1页
第1页 / 共6页
C#如何获得设备Mac地址之欧阳治创编Word下载.docx_第2页
第2页 / 共6页
C#如何获得设备Mac地址之欧阳治创编Word下载.docx_第3页
第3页 / 共6页
C#如何获得设备Mac地址之欧阳治创编Word下载.docx_第4页
第4页 / 共6页
C#如何获得设备Mac地址之欧阳治创编Word下载.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

C#如何获得设备Mac地址之欧阳治创编Word下载.docx

《C#如何获得设备Mac地址之欧阳治创编Word下载.docx》由会员分享,可在线阅读,更多相关《C#如何获得设备Mac地址之欧阳治创编Word下载.docx(6页珍藏版)》请在冰豆网上搜索。

C#如何获得设备Mac地址之欧阳治创编Word下载.docx

SELECT 

FROM 

Win32_NetworkAdapterConfiguration"

) 

;

2.ManagementObjectCollection 

queryCollection 

query.Get();

3.foreach( 

ManagementObject 

mo 

in 

4.{ 

5. 

if(mo["

IPEnabled"

].ToString() 

== 

"

True"

6. 

mac 

mo["

MacAddress"

].ToString();

7.} 

获取远程主机的MAC地址时,需要借用API函数SendARP.该函数使用ARP协议,向目的主机发送ARP包,利用返回并存储在高速缓存中的IP和MAC地址对,从而获取远程主机的MAC地址.

1.Int32 

ldest= 

inet_addr(remoteIP);

//目的ip 

2.Int32 

lhost= 

inet_addr(localIP);

//本地ip 

3.try 

Int64 

macinfo 

new 

Int64();

Int32 

len 

6;

7. 

int 

res 

SendARP(ldest,0, 

ref 

macinfo, 

len);

//发送ARP包 

8. 

return 

Convert.ToString(macinfo,16);

9.} 

10.catch(Exception 

err) 

11.{ 

12. 

Console.WriteLine("

Error:

{0}"

err.Message);

13.} 

14.return 

0.ToString();

但使用该方式获取MAC时有一个很大的限制,就是只能获取同网段的远程主机MAC地址.因为在标准网络协议下,ARP包是不能跨网段传输的,故想通过ARP协议是无法查询跨网段设备MAC地址的。

示例程序:

1.using 

System.Net;

2.using 

System;

3.using 

System.Management;

4.using 

System.Runtime.InteropServices;

5.namespace 

ConsoleApplication2 

6.{ 

public 

class 

Program 

9. 

[DllImport("

Iphlpapi.dll"

)] 

10. 

private 

static 

extern 

SendARP(Int32 

dest, 

host, 

mac, 

length);

11. 

Ws2_32.dll"

inet_addr(string 

ip);

13. 

//获取本机的IP 

14. 

string 

getLocalIP() 

15. 

16. 

17. 

IPHostEntry 

18. 

19. 

(strAddr);

20. 

21. 

//获取本机的MAC 

22. 

getLocalMac() 

23. 

24. 

null;

25. 

//[DllImport("

System.Management.dll"

26. 

ManagementObjectSearcher 

);

27. 

ManagementObjectCollection 

28. 

foreach 

(ManagementObject 

queryCollection) 

29. 

30. 

if 

(mo["

31. 

32. 

33. 

(mac);

34. 

35. 

//获取远程主机IP 

36. 

string[] 

getRemoteIP(string 

RemoteHostName) 

37. 

38. 

Dns.GetHostByName(RemoteHostName);

39. 

IPAddress[] 

IpAddr 

ipEntry.AddressList;

40. 

string[IpAddr.Length];

41. 

for 

(int 

i=0;

i<

strAddr.Length;

i++) 

42. 

43. 

strAddr[i] 

IpAddr[i].ToString();

44. 

45. 

return(strAddr);

46. 

47. 

//获取远程主机MAC 

48. 

getRemoteMac(string 

localIP, 

remoteIP) 

49. 

50. 

ldest 

51. 

lhost 

52. 

try 

53. 

54. 

55. 

56. 

57. 

macnum 

Convert.ToString(macinfo, 

16);

//16进制的Mac地址数据 

58. 

macArr 

string[macnum.Length];

59. 

macaddr="

60. 

0;

<

(macnum.Length/2);

61. 

62. 

macArr[i] 

macnum[macnum.Length 

2*(i+1)].ToString()+macnum[macnum.Length-2*i-1].ToString();

//将Mac地址顺序转置 

63. 

64. 

j=0;

j<

j++) 

65. 

66. 

if(j==0) 

67. 

68. 

macaddr 

macArr[0].ToString();

69. 

70. 

else 

71. 

72. 

macaddr+"

:

+macArr[j].ToString();

73. 

74. 

75. 

macaddr;

76. 

77. 

catch 

(Exception 

78. 

79. 

 

err.Message);

80. 

81. 

无法获得MAC地址"

82. 

83. 

void 

Main(string[] 

args) 

84. 

85. 

gi 

Program();

86. 

本地网卡信息:

87. 

Console.WriteLine(gi.getLocalIP() 

gi.getLocalMac());

88. 

/n/r远程设备的网卡信息:

89. 

temp 

gi.getRemoteIP("

MyComputer"

//远程设备的Host名称 

90. 

for(int 

temp.Length;

91. 

92. 

Console.WriteLine(temp[i]);

93. 

94. 

/n/r远程设备的Mac信息:

95. 

DeviIP 

192.168.0.5"

//远程设备的IP地址 

96. 

Console.WriteLine(gi.getRemoteMac(gi.getLocalIP(), 

DeviIP));

97. 

Console.ReadKey();

98. 

99. 

100.} 

注:

在VisualStudio2008中,可能会出现:

找不到类型或命名空间名称“ManagementObjectSearcher”(是否缺少using指令或程序集引用?

类似的错误提示。

出现这种错误的原因是没有添加对System.Management.Dll的引用。

解决办法:

在“解决方案资源管理器”-“引用”上点击右键,选择“添加引用”,在打开的列表中选择“System.Management”,点击“确定”即可。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1