zoukankan      html  css  js  c++  java
  • 获取客户端IP和MAC

    source article:http://www.cnblogs.com/leanco/articles/1148338.html

    获取客户端IP:
    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;
    }

    获取MAC地址:

    [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 void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    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");
    if(mac_src == "0")
    {
    if(userip=="127.0.0.1")
    Response.Write ("正在访问Localhost!");
    else
    Response.Write ("欢迎来自IP为" + userip + "的朋友!" + "<br>");
    return;
    }

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

    string mac_dest="";

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

    Response.Write ("欢迎来自IP为"+userip+ "<br>" + ",MAC地址为"+mac_dest+"的朋友!"

    + "<br>");
    }
    catch(Exception err)
    {
    Response.Write(err.Message);
    }
    }
  • 相关阅读:
    mac与phy怎样实现网络自适应
    POJ 3304 Segments(计算几何:直线与线段相交)
    iOS类目
    MFC中改变控件的大小和位置(zz)
    Delphi中根据分类数据生成树形结构的最优方法
    Delphi下EasyGrid使用体会
    Delphi中Messagedlg用法
    Delphi获取其它进程窗口句柄的3种方法
    delphi获取一个窗口的所有子窗口(包括嵌套)
    关于获取其它程序窗口编辑框内容解决思路
  • 原文地址:https://www.cnblogs.com/gxh973121/p/1281875.html
Copyright © 2011-2022 走看看