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

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

摘要

有时候,我们需要获取客户端的一些信息,以便进行统计。比如:客户端的唯一标识,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地址相同。

 

转载于:https://www.cnblogs.com/wolf-sun/p/5872038.html

你可能感兴趣的文章
Hadoop深入浅出,Hadoop的部署
查看>>
算法学习之路|欧拉回路初见
查看>>
VSFTP服务器学习笔记
查看>>
自己动手做聊天机器人 一-涉及知识【转】
查看>>
常用的一些javascript小技巧
查看>>
【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】下 ~ Net程序员的福利...
查看>>
【转】找了好久,IOS实现半翻页功能
查看>>
Mysql性能优化一
查看>>
SharePoint Framework 在Visual Studio Code中调试你的本地解决方案
查看>>
【转】self.myOutlet=nil、viewDidUnload、dealloc的本质剖析
查看>>
oracle 抽取 对方大字段数据
查看>>
理解.NET中的异常(二)
查看>>
基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 开发流程...
查看>>
[转]OOA/OOD/OOP区别
查看>>
.NET命名规范和开发约定
查看>>
ARM内核全解析,从ARM7,ARM9到Cortex-A7,A8,A9,A12,A15到Cortex-A53,A57【转】
查看>>
Hadoop-No.3之序列化存储格式
查看>>
Windows Phone 7 学习笔记2:感应设备的方向
查看>>
kernel_read【转】
查看>>
PHP.ini配置文件(转载)
查看>>