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


    }
  • 相关阅读:
    Android应用性能优化
    打造高质量Android应用:Android开发必知的50个诀窍
    毕向东day23--java基础-网络总结
    《编写高质量代码:改善Java程序的151个建议》
    最新java数组的详解
    主线程中一定不能放耗时操作,必须要开子线程,比如下载文件,不然会不让你拿到输入流--报错显示android.os.NetworkOnMainThreadException
    《Head First设计模式(中文版)》
    码表由来:ascll码-Gbk2312-GBK-Unicode-UTF-8
    《Java程序性能优化:让你的Java程序更快、更稳定》
    LeetCode 147. 对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/nuaalfm/p/1553520.html
Copyright © 2011-2022 走看看