ASP.NET能知道的东西

获取服务器电脑名: Page.Server.ManchineName
获取用户信息: Page.User
获取客户端电脑名:Page.Request.UserHostName
获取客户端电脑IP: Page.Request.UserHostAddress

1. 在ASP.NET中专用属性: 
获取服务器电脑名:Page.Server.ManchineName 
获取用户信息:Page.User 
获取客户端电脑名:Page.Request.UserHostName 
获取客户端电脑IP:Page.Request.UserHostAddress

2. 在网络编程中的通用方法: 
获取当前电脑名:static System.Net.Dns.GetHostName() 
根据电脑名取出全部IP地址:static System.Net.Dns.Resolve(电脑名).AddressList 
也可根据IP地址取出电脑名:static System.Net.Dns.Resolve(IP地址).HostName

3. 系统环境类的通用属性: 
当前电脑名:static System.Environment.MachineName 
当前电脑所属网域:static System.Environment.UserDomainName 
当前电脑用户:static System.Environment.UserName

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//引入相应的空间信息
using System.Text.RegularExpressions;
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //此处输入Ip地址,你可以做成接受文本框的值进行查询
        Response.Write(GetCustomerMac("192.168.168.168"));
    }
     public string GetCustomerMac(string IP)
    {
      string dirResults="";
      ProcessStartInfo psi  = new ProcessStartInfo();
      Process proc = new Process();
      psi.FileName = "nbtstat";
      psi.RedirectStandardInput = false;
      psi.RedirectStandardOutput = true;
      psi.Arguments = "-a " + IP;
      psi.UseShellExecute = false;
      proc = Process.Start(psi);
      dirResults = proc.StandardOutput.ReadToEnd();
      proc.WaitForExit();
      //匹配mac地址
      Match m = Regex.Match(dirResults, "\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w\\w");
      //若匹配成功则返回mac,否则返回找不到主机信息
      if (m.ToString() != "")
          return m.ToString();
      else
          return "找不到主机信息";
    }
}

如果我们在asp.net中有需求要获取客户端计算机的名称,可以通过Request.UserHostName获取,也可以在引用System.Net命名空间后,使用下面的方法获取:

///<summary>
       /// 获取客户端计算机名称
        ///</summary>
       ///<returns></returns>
        publicstring GetClientComputerName()
        {
            string clientIP = Request.UserHostAddress;//获取客户端的IP主机地址
            IPHostEntry hostEntry = Dns.GetHostEntry(clientIP);//获取IPHostEntry实体
            return hostEntry.HostName;//返回客户端计算机名称
        }

//获取远程客户端的浏览器信息
HttpBrowserCapabilities   httpbc=System.Web.HttpContext.Current.Request.Browser;
string  
strInfo= "您好,您正在使用   "   +   httpbc.Browser   +   "   v. "   +  
httpbc.Version   +   ",你的运行平台是   "   +   httpbc.Platform   ;
//获取远程客户端的ip主机地址
strInfo=System.Web.HttpContext.Current.Request.UserHostAddress;
//获取远程客户端的DNS名称
strInfo=System.Web.HttpContext.Current.Request.UserHostName;
//客户端上次请求的URL路径
strInfo=System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
//当前请求的URl
strInfo=System.Web.HttpContext.Current.Request.Url.ToString();
//客户端浏览器的原始用户代理信息
strInfo=System.Web.HttpContext.Current.Request.UserAgent;

//获取浏览器+版本号
    public string getBrowser()
    {
        string browsers;
        HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;
        string aa = bc.Browser.ToString();
        string bb = bc.Version.ToString();
        browsers = aa + bb;
        return browsers;
    }
    //获取客户端IP地址
    public string getIP()
    {
        string result = String.Empty;
        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;
        }
        if (null == result || result == String.Empty)
        {
            return "0.0.0.0";
        }
        return result;
    }
    //获取操作系统版本号  
    public static string SystemCheck()  
    {  
        string Agent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
        if (Agent.IndexOf("NT 4.0") > 0)
            return "Windows NT ";
        else if (Agent.IndexOf("NT 5.0") > 0)
            return "Windows 2000";
        else if (Agent.IndexOf("NT 5.1") > 0)
            return "Windows XP";
        else if (Agent.IndexOf("NT 5.2") > 0)
            return "Windows 2003";
        else if (Agent.IndexOf("NT 6.0") > 0)
            return "Windows Vista";
else if (Agent.IndexOf("NT 7.0") > 0)
            return "Windows 7";
else if (Agent.IndexOf("NT 8.0") > 0)
            return "Windows 8";
        else if (Agent.IndexOf("WindowsCE") > 0)
            return "Windows CE";
        else if (Agent.IndexOf("NT") > 0)
            return "Windows NT ";
        else if (Agent.IndexOf("9x") > 0)
            return "Windows ME";
        else if (Agent.IndexOf("98") > 0)
            return "Windows 98";
        else if (Agent.IndexOf("95") > 0)
            return "Windows 95";
        else if (Agent.IndexOf("Win32") > 0)
            return "Win32";
        else if (Agent.IndexOf("Linux") > 0)
            return "Linux";
        else if (Agent.IndexOf("SunOS") > 0)
            return "SunOS";
        else if (Agent.IndexOf("Mac") > 0)
            return "Mac";
        else if (Agent.IndexOf("Linux") > 0)  
            return "Linux";
        else if (Agent.IndexOf("Windows") > 0)  
            return "Windows";
        return "未知类型";  
    }  
}

使用这个函数可以用ASP.NET开发服务器探针程序。

服务端信息:

Label1.Text = 服务器名称:+Server.MachineName;//服务器名称  
Label2.Text = 服务器IP地址: + Request.ServerVariables[LOCAL_ADDR];//服务器IP地址  
Label3.Text = 服务器域名: + Request.ServerVariables[SERVER_NAME];//服务器域名  
Label4.Text
= .NET解释引擎版本: + .NET CLR + Environment.Version.Major + . +
Environment.Version.Minor + . + Environment.Version.Build + . +
Environment.Version.Revision;//.NET解释引擎版本  
Label5.Text = 服务器操作系统版本: + Environment.OSVersion.ToString();//服务器操作系统版本  
Label6.Text = 服务器IIS版本: + Request.ServerVariables[SERVER_SOFTWARE];//服务器IIS版本  
Label7.Text = HTTP访问端口: + Request.ServerVariables[SERVER_PORT];//HTTP访问端口  
Label8.Text = 虚拟目录的绝对路径: + Request.ServerVariables[APPL_RHYSICAL_PATH];//虚拟目录的绝对路径  
Label9.Text = 执行文件的绝对路径: + Request.ServerVariables[PATH_TRANSLATED];//执行文件的绝对路径  
Label10.Text = 虚拟目录Session总数: + Session.Contents.Count.ToString();//虚拟目录Session总数  
Label11.Text = 虚拟目录Application总数: + Application.Contents.Count.ToString();//虚拟目录Application总数  
Label12.Text = 域名主机: + Request.ServerVariables[HTTP_HOST];//域名主机  
Label13.Text = 服务器区域语言: + Request.ServerVariables[HTTP_ACCEPT_LANGUAGE];//服务器区域语言  
Label14.Text = 用户信息: + Request.ServerVariables[HTTP_USER_AGENT];  
Label14.Text=CPU个数:+Environment.GetEnvironmentVariable(NUMBER_OF_PROCESSORS);//CPU个数  
Label15.Text = CPU类型: + Environment.GetEnvironmentVariable(PROCESSOR_IDENTIFIER);//CPU类型  
Label16.Text = 进程开始时间: + GetPrStart();//进程开始时间  
Label17.Text = AspNet 内存占用: + GetAspNetN();//AspNet 内存占用  
Label18.Text = AspNet CPU时间: + GetAspNetCpu();//AspNet CPU时间  
Label19.Text = FSO 文本文件读写: + Check(Scripting.FileSystemObject);//FSO 文本文件读写  
Label20.Text = 应用程序占用内存 + GetServerAppN();//应用程序占用内存

客户端信息:

Request.Browser.MajorVersion.ToString();//获取客户端浏览器的(主)版本号Request.Browser.Version.ToString();//获取客户端浏览器的完整版本号
Request.Browser.Platform.ToString();//获取客户端使用平台的名字
Request.Browser.Version; //浏览器版本
HttpRequest.Url                        //获取有关当前请求的    URL    的信息。   
HttpRequest.UrlReferrer        //获取有关客户端上次请求的    URL    的信息,该请求链接到当前的    URL。   
HttpRequest.UserAgent            //获取客户端浏览器的原始用户代理信息。   
HttpRequest.UserHostAddress    //获取远程客户端的    IP    主机地址。   
HttpRequest.UserHostName          //获取远程客户端的    DNS    名称。   
HttpRequest.UserLanguages        //获取客户端语言首选项的排序字符串数组。
HttpRequest.UserAgent            //获取客户端浏览器的原始用户代理信息。

HttpBrowserCapabilities bc = Request.Browser;
Response.Write(浏览器信息:);
Response.Write(浏览器=  + bc.Browser +  );
Response.Write(型态=  + bc.Type + );
Response.Write(名称=  + bc.Browser + );
Response.Write(版本=  + bc.Version + );
Response.Write(使用平台=  + bc.Platform + );
Response.Write(是否为测试版=  + bc.Beta + );
Response.Write(是否为16 位的环境=  + bc.Win16 + );
Response.Write(是否为32 位的环境=  + bc.Win32 + );
Response.Write(是否支持框架(frame) =  + bc.Frames + );
Response.Write(是否支持表格(table) =  + bc.Tables + );
Response.Write(是否支持cookie =  + bc.Cookies + );
Response.Write(是否支持vb script =  + bc.VBScript + );
Response.Write(是否支持java script =  + bc.JavaScript + );
Response.Write(是否支持java applets =  + bc.JavaApplets + );
Response.Write(是否支持activex controls =  + bc.ActiveXControls + );

ASP.NET获取客户端IP及MAC地址很多时候非常必要的,像做投票、留言、评论 等系统的时候防止别人恶意操作,导致数据的虚假行。下面介绍获取客户端的IP和MAC地址的方法,仅供参考:

获取客户端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>");
   }
   catc   (Exception err)
   {
    Response.Write(err.Message);
   }
  }

ASP.NET能知道的东西的更多相关文章

  1. [转] 你是as3老鸟吗?但是有些你可能目前都不知道的东西

    你是as3老鸟吗?如果以下内容对你有莫大的帮助,请顶下! 一:加载swf库中的图片 new 的过程就是图片解压缩的过程.处于 Class 状态时,图片占用的内存和 SWF 文件中这个图片占用的磁盘空间 ...

  2. CSS定位规则之BFC 你居然一直不知道的东西!!!!!

    相关文档: http://blog.sina.com.cn/s/blog_877284510101jo5d.html http://www.cnblogs.com/dojo-lzz/p/3999013 ...

  3. 关于oracle redo log buffer 你所不知道的东西

    [ora11@lixora ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 8 09:57:50 ...

  4. Java中,那些关于String和字符串常量池你不得不知道的东西

    老套的笔试题 在一些老套的笔试题中,会要你判断s1==s2为false还是true,s1.equals(s2)为false还是true. String s1 = new String("xy ...

  5. 你能知道的或者不知道的shell变量都在这里

    第2章 shell变量讲解 2.1 shell中的变量讲解 2.1.1 什么是shell变量 变量的本质就是内存中的一块区域 变量名 位置 变量是脚本中经常会使用的内容信息 变量可以在脚本中直接使用 ...

  6. ASP.NET获取客户端信息,获取客户端IP等等

    山上明月 ASP.NET能知道的东西 获取服务器电脑名: Page.Server.ManchineName 获取用户信息: Page.User 获取客户端电脑名:Page.Request.UserHo ...

  7. 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)

    转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...

  8. [译]Introducing ASP.NET vNext and MVC 6

    原文:http://www.infoq.com/news/2014/05/ASP.NET-vNext?utm_source=tuicool Part of the ASP.NET vNext init ...

  9. Introducing ASP.NET vNext and MVC 6

    [译]Introducing ASP.NET vNext and MVC 6 原文:http://www.infoq.com/news/2014/05/ASP.NET-vNext?utm_source ...

随机推荐

  1. C#中匿名函数、委托delegate和Action、Func、Expression、还有Lambda的关系和区别

    以前一直迷迷糊糊的,现在总算搞明白. Lambda表达式 Lamda表达式基本写法是()=>{ };Lambda和方法一样都可以传入参数和拥有返回值.(int x)=>{return x; ...

  2. 【Selenium专题】 FAQ_对象识别_Compound class names are not supported

    测试代码 public void login(){ WebDriver driver = new ChromeDriver(); driver.get("http://IP:Port/cli ...

  3. mongodb 的基本操作

      1. show dbs 查看服务器中有多少个数据库   2.创建数据库 use <数据库名称> 注意如果数据库中没有表的话,那么数据库是不会显示的 如果存在这个表名则是切换 不存在则是 ...

  4. 从零开始用 Flask 搭建一个网站(四)

    前言 从零开始用 Flask 搭建一个网站(三) 介绍了网页前端与后端.前端与前端之间数据的交流.本节主要介绍一下如何应用 Flask-OAuthlib, 使用 Flask-OAuthlib 就可以轻 ...

  5. Drupal Coder 模块远程命令执行分析(SA-CONTRIB-2016-039)

    转载请注明文章出处:http://www.cnblogs.com/magic-zero/p/5787181.html 起初看到这个漏洞的时候是在exploit-db上边.地址在这里:https://w ...

  6. C 和 C++ 字符串函数操作

    1)字符串操作  strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长 ...

  7. 看一段Delphi导出到Word的源代码

    procedure TFrmWeekAnalysisQry.BtnExportToExcelClick(Sender: TObject);var wordApp,WordDoc,WrdSelectio ...

  8. centos 7编译安装mysql 5.7.17

    1.进入MySQL官网下载MySQL源代码 依次点击Downloads -> Community -> MySQL Community Server 源代码1.Select Operati ...

  9. OC总结 【OC基础语法相关知识】

    m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...

  10. 【Css】一个简单的选项卡

    这次来做一个简单的选项卡. 选项卡其实就分3个部分:html代码,用于显示的内容:css代码,用于显示的样式:javascript代码,用于点击事件. 老规矩,先写一个html坯子. <!DOC ...