zoukankan      html  css  js  c++  java
  • asp.net获取mac(终)

    经测试成功 只能获取同网段的哦~

    顺便奉送

    asp.net 获取服务器的硬盘id 网卡mac地址 cpu序列号

    多个IP、端口、MAC地址的正则匹配

    js获取mac地址(续)

    记得引用using System.Runtime.InteropServices;

     [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);

    ///<summary>
    ///得到客户端ip
    ///</summary>
    ///<returns>ip</returns>
    private string GetClientIP()
    {
    string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if (null == result || result == String.Empty)
    {
    result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    }
    if (null == result || result == String.Empty)
    {
    result = HttpContext.Current.Request.UserHostAddress;
    }
    return result;
    }


    ///<summary>
    /// 利用客户端ip得到客户端mac
    ///</summary>
    ///<param name="remoteip">客户端ip</param>
    ///<returns>int16类型的mac</returns>
    static private Int64 getremotemac(string remoteip)
    {
    Int32 ldest = inet_addr(remoteip);
    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;
    }


    ///<summary>
    /// int64类型的mac转换成正确的客户端mac
    ///</summary>
    ///<returns>mac</returns>
    private string GetClientMAC()
    {
    Int64 macid = getremotemac(GetClientIP());
    if (macid == 0)
    return "0";
    string beforeMacAddr = Convert.ToString(macid, 16);
    string endMacAddr = "";
    string[] macArray = new string[6];
    for (int i = 0; i < 6; i++)
    {
    macArray[i] = beforeMacAddr.Substring(i * 2, 2);
    }
    for (int i = 0; i < 6; i++)
    {
    endMacAddr += macArray[5 - i] + "-";
    }
    endMacAddr = endMacAddr.Substring(0, endMacAddr.Length - 1);
    endMacAddr = endMacAddr.ToUpper();
    return endMacAddr;
    }



  • 相关阅读:
    mysql 单表查询
    socket 阻塞,同步、I/O模型
    I/O复用
    send函数和recv函数
    linux网络编程、系统编程
    TCP三次握手、四次挥手
    支持中文的PHP按字符串长度分割成数组代码
    php json_encode 处理中文
    php base64各种上传
    本地创建分支
  • 原文地址:https://www.cnblogs.com/0banana0/p/2233333.html
Copyright © 2011-2022 走看看