zoukankan      html  css  js  c++  java
  • 根据ip地址获得Mac地址的一种方法

    Code
    public static class MacUtility
    {
        [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;

            
    if (ip == "127.0.0.1")

                ip 
    = GetLocalIP()[0];

            var ldest 
    = inet_addr(ip);

            Int64 macinfo 
    = new Int64();
            Int32 len 
    = 6;
            
    try
            {
                SendARP(ldest, 
    0ref 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(102);
                mac2 
    = originalMACAddress.Substring(82);
                mac3 
    = originalMACAddress.Substring(62);
                mac4 
    = originalMACAddress.Substring(42);
                mac5 
    = originalMACAddress.Substring(22);
                mac6 
    = originalMACAddress.Substring(02);
                macAddress 
    = mac1 + "-" + mac2 + "-" + mac3 + "-" + mac4 + "-" + mac5 + "-" + mac6;
            }
            
    else
            {
                macAddress 
    = "";
            }
            
    return macAddress.ToUpper();

        }
        
    public static string[] GetLocalIP()
        {
            
    string hostName = Dns.GetHostName();

            IPHostEntry ipEntry 
    = Dns.GetHostByName(hostName);

            IPAddress[] arr 
    = ipEntry.AddressList;

            
    string[] result = new string[arr.Length];

            
    for (int i = 0; i < arr.Length; i++)
            {

                result[i] 
    = arr[i].ToString();
            }
            
    return result;
        }


    }
  • 相关阅读:
    Raid卡在Write back 与Write through 时的性能差异
    mysql 的outfile以及infile 语法简单备份恢复表
    @SneakyThrows
    java中的mmap实现--转
    以ATT&CK为例构建网络安全知识图
    横向移动攻击点与识别
    Tomcat开启JMX监控
    mysql serverTimezone
    自增还是UUID?数据库主键的类型选择,为啥不能用uuid做MySQL的主键?
    数据库:查询结果中增加数据库不存在的字段的方法
  • 原文地址:https://www.cnblogs.com/nuaalfm/p/1553520.html
Copyright © 2011-2022 走看看