.NET中获取电脑名、IP地址及用户名方法
在 NET中获取一台电脑名 IP地址及当前用户名是非常简单 以下是我常用的几种方法 如果大家还有其他好的方法 可以回复一起整理 在ASP NET中专用属性 获取服务器电脑名 Page Server ManchineName 获取用户信息 Page User 获取客户端电脑名 Page Request UserHostName 获取客户端电脑IP Page Request UserHostAddress 在网络编程中的通用方法 获取当前电脑名 static System Net Dns GetHostName() 根据电脑名取出全部IP地址 static System Net Dns Resolve(电脑名) AddressList 也可根据IP地址取出电脑名 static System Net Dns Resolve(IP地址) HostName 系统环境类的通用属性 当前电脑名 static System Environment MachineName 当前电脑所属网域 static System Environment UserDomainName 当前电脑用户 static System Environment UserName 举例子来说明: using System Net; private void ButtonIP_Click(object sender System EventArgs e) { System Net IPAddress[] addressList = Dns GetHostByName(Dns GetHostName()) AddressList; if (addressList Length> ) { TextLIP Text = addressList[ ] ToString(); TextSIP Text = addressList[ ] ToString(); } else { TextLIP Text = addressList[ ] ToString(); TextSIP Text = 没有可用的连接 ; } } lishixinzhi/Article/program/net/201311/12017
这个只能从服务器端的 RequestUserHostAddress 得到 和服务器连接的代理 或客户IP
这个有可能是客户的IP 也有可能是 中转代理服务器的IP
没有任何办法准确得到 客户机的IP,没有任何办法 因为浏览器端的JAVASCRIPT 代码权限有限,没有办法在浏览器端读取客户机的信息
你这个是ASP中的vbscript脚本吧,这个function是放在服务器上执行的,在某个asp页面中。
这个IP转换的函数用的很多,他的功能就是把IP地址转换成十进制的数值,用来方便数据库查询的。
因为如果IP是字符型,那是不好查询的,所以就做了个转换,这样你就可以用这种方式查询了:
select count() from LockIP where ip1 <="&num&" and ip2 >="&num&"
但这个函数并不是直接用来查询IP对应城市的,它应该是用来查找某个IP是否在被锁定的IP段范围内的,不过你可以稍加修改,它就可以用来查找城市了,因为这个IP表里应该有城市字段的,
这样改:
sql = "select city from [你的IP表] where ip1 <=" & num & " and ip2 >=" & num
dim city=""
set rs=connexecute(sql)
if rs <> null and rscount > 0 then
city = rs(0)
end if
其中的city对应你表中的城市字段
根据您的描述与贴图,您应该是通过localhost或通过127001来进行访问了
登录IP:::1
指的就是当前计算机
这是一个IP地址类似于"回环地址"而已
记得,如果您是学问的那么这个"回环地址"已经要引起来,只是类似,因为在不考虑服务器集群等等情况下,目前你能遇到的"回环"就是这样产生的
其他的情况有很多,这个需要您自行查找资料了,这个知识点内容不少
public string IPAddress()
{
string result = StringEmpty;
result = HttpContextCurrentRequestServerVariables["HTTP_VIA"];
if (!stringIsNullOrEmpty(result))
{
result = HttpContextCurrentRequestServerVariables["HTTP_X_FORWARDED_FOR"];
if (!stringIsNullOrEmpty(result))
{
//可能有代理
if (resultIndexOf("") == -1) //没有""肯定是非IPv4格式
result = null;
else
{
if (resultIndexOf(",") >= 0)
{
//有",",估计多个代理。取第一个不是内网的IP。
result = resultReplace(" ", "")Replace("'", "")Replace(";", "");
string[] temparyip = resultSplit(',');
for (int i = 0; i < temparyipLength; i++)
{
if (IsIPAddress(temparyip[i]))
{
if (!temparyip[i]StartsWith("10") && !temparyip[i]StartsWith("192168") && !temparyip[i]StartsWith("17216"))
{
result = temparyip[i]; //找到不是内网的地址
break;
}
}
}
}
if (!IsIPAddress(result)) //代理即是IP格式
{
result = null; //代理中的内容 非IP,取IP k
}
}
}
}
else
{
result = HttpContextCurrentRequestServerVariables["REMOTE_ADDR"];
}
if (stringIsNullOrEmpty(result))
{
result = HttpContextCurrentRequestServerVariables["REMOTE_ADDR"];
}
if (stringIsNullOrEmpty(result))
{
result = HttpContextCurrentRequestUserHostAddress;
}
if (stringIsNullOrEmpty(result))
{
result = "000000000000";
}
return result;
}
public static IPAddress GetMyselfIP()
{
IPHostEntry ipHost = DnsResolve(DnsGetHostName());
IPAddress ipAddr = ipHostAddressList[0];
return ipAddr;
}
在客户端上运行这个方法能够获得客户端的IP,然后发到服务器端就成了
一 你需要一个IP TABLE, 这个IP TABLE里面记录了各个网段的IP归属地址;
它能够供你查询用户所有IP段的归属地;
二 通过PageRequestUserHostAddress获取得到用户的IP地址;
三 将得到的IP地址转换成IP TABLE数据表中相对应的格式, 然后进行区域比对就能够得到归属地;
以上提到的IP TABLE能够在BAIDU里找到; 输入关键词: IP数据库
然后下载一个MDB数据库文件, 就OK了;
有最新版本;
0条评论