C#如何判断同网段计算机是否存在
2009-02-05 15:07
169 查看
这个问题很简单
我平时一般是这样处理的
Code
public class GetMac
{
[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);
public static string GetRemoteMac(string clientIP)
{
string ip = clientIP;
Int32 ldest = inet_addr(ip);
Int64 macinfo = new Int64();
Int32 len = 6;
try
{
SendARP(ldest, 0, ref macinfo, ref len);
}
catch
{
return "";
}
string originalMACAddress = Convert.ToString(macinfo, 16);
if (originalMACAddress.Length < 12)
{
originalMACAddress = originalMACAddress.PadLeft(12, '0');
}
string macAddress;
if (originalMACAddress != "0000" && originalMACAddress.Length == 12)
{
string mac1, mac2, mac3, mac4, mac5, mac6;
mac1 = originalMACAddress.Substring(10, 2);
mac2 = originalMACAddress.Substring(8, 2);
mac3 = originalMACAddress.Substring(6, 2);
mac4 = originalMACAddress.Substring(4, 2);
mac5 = originalMACAddress.Substring(2, 2);
mac6 = originalMACAddress.Substring(0, 2);
macAddress = mac1 + "-" + mac2 + "-" + mac3 + "-" + mac4 + "-" + mac5 + "-" + mac6;
}
else
{
macAddress = "";
}
return macAddress.ToUpper();
}
}
不知道大家有没有别的好点的方法呢?
我平时一般是这样处理的
Code
public class GetMac
{
[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);
public static string GetRemoteMac(string clientIP)
{
string ip = clientIP;
Int32 ldest = inet_addr(ip);
Int64 macinfo = new Int64();
Int32 len = 6;
try
{
SendARP(ldest, 0, ref macinfo, ref len);
}
catch
{
return "";
}
string originalMACAddress = Convert.ToString(macinfo, 16);
if (originalMACAddress.Length < 12)
{
originalMACAddress = originalMACAddress.PadLeft(12, '0');
}
string macAddress;
if (originalMACAddress != "0000" && originalMACAddress.Length == 12)
{
string mac1, mac2, mac3, mac4, mac5, mac6;
mac1 = originalMACAddress.Substring(10, 2);
mac2 = originalMACAddress.Substring(8, 2);
mac3 = originalMACAddress.Substring(6, 2);
mac4 = originalMACAddress.Substring(4, 2);
mac5 = originalMACAddress.Substring(2, 2);
mac6 = originalMACAddress.Substring(0, 2);
macAddress = mac1 + "-" + mac2 + "-" + mac3 + "-" + mac4 + "-" + mac5 + "-" + mac6;
}
else
{
macAddress = "";
}
return macAddress.ToUpper();
}
}
不知道大家有没有别的好点的方法呢?
相关文章推荐
- 如何用SQL 语法判断,某一字段在表中是否存在?
- 如何判断单链表是否存在环
- 如何判断数据库中某张表是否存在约束
- 如何判断两个IP是否在同一网段
- 如何在shell脚本中判断文件或者文件夹是否存在?
- PHP如何判断远程图片文件是否存在
- oracle 基础和管理 如何判断某个表中是否存在某个字段?
- Go语言的map如何判断key是否存在
- 算法面试题:如何判断单链表中是否存在环
- JDBC如何判断数据库的表是否存在
- PHP 远程图片:如何判断远程图片是否存在
- JDBC 如何判断一张表是否存在
- 如何在tiptop 4GL程序中判断客户端机器某个文件是否存在
- 如何判断链表是否存在环和求链表中间节点
- jQuery 中如何判断对象是否存在
- 如何判断一个文件或目录是否存在
- PHP如何判断远程图片文件是否存在
- 如何判断临时表是否存在
- Android.mk如何判断文件是否存在
- 如何判断Javascript对象是否存在