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能知道的东西的更多相关文章
- [转] 你是as3老鸟吗?但是有些你可能目前都不知道的东西
你是as3老鸟吗?如果以下内容对你有莫大的帮助,请顶下! 一:加载swf库中的图片 new 的过程就是图片解压缩的过程.处于 Class 状态时,图片占用的内存和 SWF 文件中这个图片占用的磁盘空间 ...
- CSS定位规则之BFC 你居然一直不知道的东西!!!!!
相关文档: http://blog.sina.com.cn/s/blog_877284510101jo5d.html http://www.cnblogs.com/dojo-lzz/p/3999013 ...
- 关于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 ...
- Java中,那些关于String和字符串常量池你不得不知道的东西
老套的笔试题 在一些老套的笔试题中,会要你判断s1==s2为false还是true,s1.equals(s2)为false还是true. String s1 = new String("xy ...
- 你能知道的或者不知道的shell变量都在这里
第2章 shell变量讲解 2.1 shell中的变量讲解 2.1.1 什么是shell变量 变量的本质就是内存中的一块区域 变量名 位置 变量是脚本中经常会使用的内容信息 变量可以在脚本中直接使用 ...
- ASP.NET获取客户端信息,获取客户端IP等等
山上明月 ASP.NET能知道的东西 获取服务器电脑名: Page.Server.ManchineName 获取用户信息: Page.User 获取客户端电脑名:Page.Request.UserHo ...
- 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)
转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...
- [译]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 ...
- 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 ...
随机推荐
- QPushButton 点击信号分析
QPushButton 点击信号分析 QPushButton有三个很重要的信号跟点击有关 pressed clicked toggled 表面上看,pressed和clicked都会在点击按钮时触发, ...
- 在一台服务器上搭建相对高可用HiveServer实践
本文来自网易云社区 作者:刘杰 问题及原因 组里之前搭建了一个hiveserver提供给猛犸上的ETL程序调用,hiveserver隔三差五地挂掉重启,网上查了些资料,也咨询了猛犸那边维护hivese ...
- 【08】循序渐进学 docker:docker compose
写在前面的话 在之前的操作中,即使是单个容器每次都需要敲很长的命令,当需要多个容器组合着用的时候更加麻烦,此时我们急需找到一种一次配置,随便运行的方法. 这就是这一节重点,单机容器编排工具:docke ...
- 【OCP-12c】CUUG最新考试原题整理及答案(071-10)
10.(5-6) choose the best answer:Examine the structure of the EMPLOYEES table:There is a parent/child ...
- “全栈2019”Java第十八章:一元运算符
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- shell 常用命令集合
grep -i 忽略大小写 -I 跳过二进制文件 -c 计算数量 -n 显示行号 -R 递归 -v 不匹配某个关键字 常用组合命令 grep -iIRn keyword * 搜索含有该 keyword ...
- Python3之文本操作
文件操作示例分析: 文件操作一般要经历三个步骤: 打开文件 操作文件 关闭文件 读取操作示例: >>>f = open('test.txt', 'r') # 打开文件test.txt ...
- [原创]Redis 持久化说明及配置
目录 参考链接 介绍 RDB 持久化 优点 缺点 相关配置参数 AOF 持久化 优点 缺点 相关配置参数 参考链接 持久化 Redis命令参考 介绍 Redis 运行时数据保存在内存中, 一旦重启则数 ...
- 什么是hive
Hadoop Hive概念学习系列之什么是Hive? 参考 <Hadoop大数据分析与挖掘实战>的在线电子书阅读 http://yuedu.baidu ...
- UltraFast设计法实践(1) -- 初始设计检查
目录 1. report_failfast 1.1 命令使用 1.2 优化 1.3.总结 2.report_timing_summary 3. report_methodology 4. 总结 5.遗 ...