!!!请教高手怎样在winform中获得网关,网卡(mac)地址?!!! !!!请教高手怎样在winform中获得网关,网卡(mac)地址?!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using System.Management; static DnsQuery() { string[] dnses; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); //枚举当前机子上的所有网卡 foreach(ManagementObject mo in moc) { if((bool)mo["ipEnabled"]) { dnses = (string[])mo["DNSServerSearchOrder"]; if (dnses!=null) { dnsServer=dnses[0]; //使用第一个找到的DNS服务器。 } } } } .net/C#中没有现成的方法可以获取机器的MAC,System.net命名空间下只能获取一些比较简单的Dns信息,比如用户名等。现在使用两种方法获取机器的MAC:调用API和使用操作系统命令。不过这两个途径都存在自身的不足。 API:源码如下[DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length); [DllImport("Ws2_32.dll")] private static extern Int32 inet_addr(string ip); /// /// 根据ip得到网卡mac地址 /// /// 给出的ip地址 /// 对应ip的网卡mac地址 public static Int64 GetMACByIP(string ip) { Int32 ldest= inet_addr(ip); //目的地的ip try { Int64 macinfo = new Int64(); Int32 len = 6; int res = SendARP(ldest,0, ref macinfo, ref len); return macinfo; } catch(Exception err) { Console.WriteLine("Error:{0}",err.Message); } return 0; } C# 要使用DevExpress中做一个图形报表? OpenWebKitSharp 运行错误 .net如何测试网速 DataGridViewComboBoxCell的问题 Socket下载页面部分出现乱码,请大家帮忙解决 mysql数据库中读写图片 自动运行另一程序,打开一个文件并分析 C#中通用化是什么意思 请教一个获取窗体变量集合的问题? 使用ADO. NET怎么做项目 在DataGrid如何添加一列checkbox 更新数据库时当变量包含“'”时会出错的问题
static DnsQuery()
{
string[] dnses;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances(); //枚举当前机子上的所有网卡
foreach(ManagementObject mo in moc)
{
if((bool)mo["ipEnabled"])
{
dnses = (string[])mo["DNSServerSearchOrder"];
if (dnses!=null)
{
dnsServer=dnses[0]; //使用第一个找到的DNS服务器。
}
}
}
}
private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip); ///
/// 根据ip得到网卡mac地址
///
/// 给出的ip地址
/// 对应ip的网卡mac地址
public static Int64 GetMACByIP(string ip)
{
Int32 ldest= inet_addr(ip); //目的地的ip
try
{
Int64 macinfo = new Int64();
Int32 len = 6;
int res = SendARP(ldest,0, ref macinfo, ref len);
return macinfo;
}
catch(Exception err)
{
Console.WriteLine("Error:{0}",err.Message);
}
return 0;
}