关于API取MAC地址
1.关于API取MAC地址
2.环境
2.0 从网地址 1.1.1.1-1.1.1.255(假设是我的局域网地址1.1.1 )
2.1 net view
可以看到我想测试的机器 myComputerName
2.2
ping -a
返回 Pinging myComputerName [myAddress] with 32 bytes of data:
其他ping通信息
2.3 nbtstat -a myAddress
NetBIOS Remote Machine Name Table
Name Type Status
---------------------------------------------
teatName <00> UNIQUE Registered
cntest <00> GROUP Registered
teatName <20> UNIQUE Registered
cntest <1E> GROUP Registered
MAC Address = myMacAddress
2.88 根据上面的信息我理解是我想测试的机器在连接方面没有问题
3.代码 (网上copy过来的)
[DllImport("IPHLPAPI.dll")]
private static extern int SendARP(Int32 DestIP, Int32 SrcIP, ref Int64 pMacAddr, ref Int32 PhyAddrLen);
/// <summary>
/// 使用 SendARP 查询 MAC 地址 0 z3 g ~- z+ X9 s7 l
///通过 IP Helper API 中的 SendARP 发送 ARP 请求来获取 MAC 地址,简单方便,缺点是不能跨越网关
/// </summary>
/// <param name="hostip"></param>
/// <returns></returns>
public static string GetMacAddressByPInvoke(string hostip)//获取远程IP(不能跨网段)的MAC地址
{
string Mac = "";
try
{
Int32 ldest = inet_addr(hostip); //将IP地址从 点数格式转换成无符号长整型
Int64 macinfo = new Int64();
Int32 len = 6;
SendARP(ldest, 0, ref macinfo, ref len);
string TmpMac = Convert.ToString(macinfo, 16).PadLeft(12, '0');//转换成16进制 注意有些没有十二位
Mac = TmpMac.Substring(0, 2).ToUpper();//
for (int i = 2; i < TmpMac.Length; i = i + 2)
{
Mac = TmpMac.Substring(i, 2).ToUpper() + "-" + Mac;
}
}
catch (Exception Mye)
{
//Todo-99 add log info
// Mac = "获取远程主机的MAC错误:" + Mye.Message;
}
return Mac;
}
4.问题
1. 绝大部分机器能取出MAC 地址。但几台机器却是无法取出MAC地址。也就是在调用 SendARP(ldest, 0, ref macinfo, ref len);
返回的macinfo是为0的。
---------华丽的分隔线-----------------------------
请教下各位低手高手。这大概是什么原因。或者我哪里做错了也或者是可能哪些因素可能影响到了
任何的提示或指教不胜感激。
谢谢
...全文
相关推荐
易语言取原生MAC地址模块源码-易语言
获取MAC地址在很多场景下都有应用,比如设备注册、网络监控或者网络故障排查等。"取原生MAC地址模块源码"是指使用易语言编写的能够直接获取系统原生MAC地址的代码模块。
易语言-取原生MAC地址
使用系统API:在Windows系统中,可以通过`GetAdaptersInfo`或`GetAdaptersAddresses` API函数来获取网络接口的详细信息,包括MAC地址。2.
易语言-易语言取指定IP的MAC地址
标题"易语言-易语言取指定IP的MAC地址"所涉及的知识点是使用易语言获取指定IP地址对应的MAC地址。易语言是一种中文编程语言,设计简洁,易于学习,适合初学者和专业人士。
易语言取原生MAC地址模块
在易语言中实现取原生MAC地址功能,可以通过调用Windows API来完成,这通常涉及到底层的系统调用和设备控制。
易语言取多网卡MAC地址源码-易语言
易语言取多网卡MAC地址源码"是专门针对易语言(E Language)设计的一种编程代码,用于获取计算机上安装的所有网卡的MAC地址。


