博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Asp.Net]获取客户端ip和mac地址
阅读量:6291 次
发布时间:2019-06-22

本文共 2392 字,大约阅读时间需要 7 分钟。

摘要

有时候,我们需要获取客户端的一些信息,以便进行统计。比如:客户端的唯一标识,ip等信息

IP

通过获取HTTP_X_FORWARDED_FOR,或者REMOTE_ADDR可以获取客户端的ip。

private string GetClientIP()        {            string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];            if (string.IsNullOrEmpty(result))            {                result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];            }            if (string.IsNullOrEmpty(result))            {                result = HttpContext.Current.Request.UserHostAddress;            }            return result;        }

测试

MAC

MAC(Medium/Media Access Control)地址,用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位)。其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的标识符”(Organizationally Unique Identifier),后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。

[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 string GetClientMAC()        {            string mac_dest = string.Empty;            // 在此处放置用户代码以初始化页面            try            {                string userip = Request.UserHostAddress;                string strClientIP = Request.UserHostAddress.ToString().Trim();                Int32 ldest = inet_addr(strClientIP); //目的地的ip                 Int32 lhost = inet_addr("");   //本地服务器的ip                 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 ex)            {                throw ex;            }            return mac_dest;        }

测试发现输出的mac地址和通过命令config/all查到的mac地址相同。

 

转载地址:http://otkta.baihongyu.com/

你可能感兴趣的文章
数据结构 第6章 图 单元小结
查看>>
extern "C"
查看>>
JAVA构造方法
查看>>
Java中的关键字
查看>>
基础算法 ---> 二分法
查看>>
Java内部类
查看>>
数据结构和算法:队列和栈
查看>>
用户登录保存数据实例(慕课笔记 使用SharedPreferences保存用户名)
查看>>
如何判断一条sql(update,delete)语句是否执行成功
查看>>
JSONObject.parseObject(jsonStr);和JSONObject.fromObject(jsonStr);
查看>>
【集训队作业2018】小Z的礼物
查看>>
ClientScriptManager与ScriptManager向客户端注册脚本的区别
查看>>
js和php中几种生成验证码的方式
查看>>
android UI进阶之仿iphone的tab效果1
查看>>
这是我的第1个C#程序(向控制台输出一句话)
查看>>
html
查看>>
Xqk.Data数据框架开发指南:丰富的、灵活的查询方法(第三部分:SqlField)
查看>>
Java基本语法
查看>>
MapReduce对交易日志进行排序的Demo(MR的二次排序)
查看>>
online-compiler 在线编译器
查看>>