山上明月 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); } }