نحوه دریافت آدرس Mac دستگاه مشتری در ASP.NET C #

جمعه ۱۱ تیر ۱۴۰۰

69

3

نحوه دریافت آدرس Mac دستگاه مشتری در ASP.NET C #

هرگز نمی توانید آدرس MAC کاربری متصل به وب سایت خود را دریافت کنید ، هنگامی که اتصال سوکت بین مقصد (سرور وب سایت شما) و یک منبع (رایانه مشتری) ایجاد می شود ، فقط می توانید آدرس IP منبع را دریافت کنید ، زیرا آدرس MAC هرگز از طریق اتصال سوکت ارسال می شود.

 

(مشتری <--> سرور) ، به منظور دریافت آدرس IP کاربر.

 

می توانید برای بدست آوردن آدرس mac دستگاه مشتری در asp.net c # از این کد استفاده کنید ،

public string GetIPAddress()
{
    System.Web.HttpContext context = System.Web.HttpContext.Current;
    string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

    if (!string.IsNullOrEmpty(ipAddress))
    {
        string[] addresses = ipAddress.Split(',');
        if (addresses.Length != 0)
        {
            return addresses[0];
        }
    }

    return context.Request.ServerVariables["REMOTE_ADDR"];
}
[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);

private static string GetClientMAC(string strClientIP)
{
    string mac_dest = "";
    try
    {
        Int32 ldest = inet_addr(strClientIP);
        Int32 lhost = inet_addr("");
        Int64 macinfo = new Int64();
        Int32 len = 6;
        int res = SendARP(ldest, 0, ref macinfo, ref len);
        string mac_src = macinfo.ToString("X");

        while (mac_src.Length < 12)
        {
            mac_src = mac_src.Insert(0, "0");
        }

        for (int i = 0; i < 11; i++)
        {
            if (0 == (i % 2))
            {
                if (i == 10)
                {
                    mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2));
                }
                else
                {
                    mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2));
                }
            }
        }
    }
    catch (Exception err)
    {
        throw new Exception("L?i " + err.Message);
    }
    return mac_dest;
}
protected void Button1_Click1(object sender, EventArgs e)
{
    Label1.Text = GetClientMAC(GetIPAddress());
}