最近更新   设为主页   获取指定IP的终端的MAC地址 加入收藏  
计算机基础教程网 本站招聘  
 [投稿登 陆]    [问题求解或论坛登 陆]
ITWEN首页操作系统网络冲浪办公软件网页设计图形图象认证考试程序设计数据库其它文章交流论坛  
  当前位置:ITWen >>  C#语言  >>  获取指定IP的终端的MAC地址
获取指定IP的终端的MAC地址
作者:ItWen收集整理    来源:www.itwen.com    更新时间:2006-11-23
[ 收藏此页到: 天天 | 和讯 | 博采 | ViVi | 狐摘 | 我摘 ]  
  


因为业务需要,需要给公司部分终端进行登记,以保证授权终端能够登录业务系统,最好的方法就是记录下每台终端的MAC地址来进行验证是否有授权。
下面是采用调用API的方式获取指定IP的终端的MAC地址:
[DllImport("Iphlpapi.dll")] public static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); //dest为目标机器的IP;Host为本机器的IP
[DllImport("Ws2_32.dll")] public static extern Int32 inet_addr(string ip);
public static string GetNetCardAddress(string strIp) { try { IPHostEntry host = Dns.GetHostByName(System.Environment.MachineName); Int32 local = inet_addr(host.AddressList[0].ToString()); Int32 remote = inet_addr(strIp);
Int64 macinfo = new Int64(); Int32 length = 6; SendARP(remote, local, ref macinfo, ref length);
string temp = System.Convert.ToString(macinfo, 16).PadLeft(12, '0').ToUpper();
StringBuilder strReturn = new StringBuilder(); int x = 12; for(int i=0;i<6;i++) { strReturn.Append(temp.Substring(x-2, 2)); x -= 2; }

return strReturn.ToString(); } catch(Exception error) { throw new Exception(error.Message); } }
在上面的方式使用一段时间之后发现只能获取到同一网段或没有经过任何路由的终端的MAC地址,而对那些不同网段或经过了路由的终端的MAC地址则无法正常获取到MAC地址。下面的操作系统命令方式可以解决此问题:
public static string GetNetCardAddress2(string strIp) { string mac = "";
System.Diagnostics.Process process = new System.Diagnostics.Process(); process.StartInfo.FileName = "nbtstat"; process.StartInfo.Arguments = "-a "+strIp; process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; process.StartInfo.RedirectStandardOutput = true; process.Start(); string output = process.StandardOutput.ReadToEnd(); int length = output.IndexOf("MAC Address = ");
if(length>0) { mac = output.Substring(length+14, 17); } process.WaitForExit(); return mac.Replace("-", "").Trim(); }(完)计算机基础教程网


  引用提示:
  内容页面:获取指定IP的终端的MAC地址 --- C#语言
  作者:ItWen收集整理
  来源:www.ITWEN.com 计算机基础教程网
  

  版权申明:
  本网站所有内容,未经注明的,版权一律属于计算机基础教程网(ITWEN.com)制作署所有。转载引用本网站的原创文章,请务必注明信息来源,标明“计算机基础教程网(ITWEN.com)”字样。
  计算机基础教程网(ITWEN.com)依法保护知识产权,如果我们的文章有涉及或侵犯您的有关权益,请即时与我们联系, 注明网址及文章,我们会即时处理或删除, 感谢您的合作!   


】 【返回站点首页】【打印本页】【关闭本页
     资料搜索
     热门文章
·提高ORACLE数据库的查询统计速
·在Delphi中调用CHM帮助文件
·GuruoftheWeek条款03
·让VB应用程序支持鼠标滚轮
·My Singleton in C
·在计算机屏幕上画图
·浅谈ADO.NET文章系列之二 —
·读书笔记——Ant – The D
·Coreldraw设计应用之邮票制
·Photoshop文字特效应用柔美
·CCNP课堂---Cisco设备图
·Xoops URL 重写 | Xo
·apache1.3 与tomcat
·RationalXDEDevelo
·回答为什么执行JAVA程序时,会出
     前面文章
·在ASP.NET下实现数字和字符相
·复制文件夹所有内容 和 删除整个文
·如何备份程序到PC上 以便平常可以
·.NET之ASPWebForm快速
·weblogic与jBuilder
·操作系统常见问题_Restore这
·用Java实现的设计模式-Fact
·PowerPoint让多个对象协作
·linux环境下的"蚂蚁
·Flash MX2004入门与进阶
·Spring 入门一个简单的例子-
·flash action 详解1
·兵器谱上的新贵修复工具
·数据库连接之jtds介绍待翻译
·防直接用URL下载文件之二
·IIS 状态代码
·写给希望从事编程工作的年轻人
·BialkOrchestratio
·JSP编程进度条设计实例4
·在ASP.NET中从SQL Ser

文章: 获取指定IP的终端的MAC地址 已经被浏览了 次。
免责声明 | 关于我们 | 广告联系 | 友情链接 | 帮助设置 | 网站导航 | 最近更新 | 共同合作
计算机基础教程网(www.ITwen.com) 版权所有
copyright 2005-2006,All Rights Reserved
计算机基础教程网