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;
        }


    }
  • 相关阅读:
    联考20200801 T2 皮卡丘
    联考20200729 T2 划愤
    联考20200801 T1 林海的密码
    联考20200725 T2 Tree
    联考20200721 T1 s1mple
    联考20200730 T2 小B的环
    联考20200730 T1 小B的班级
    联考20200718 T1 因懒无名
    联考20200723 T1 数
    联考20200722 T1 集合划分
  • 原文地址:https://www.cnblogs.com/nuaalfm/p/1553520.html
Copyright © 2011-2022 走看看