Ⅰ 为什么在jsp中 request.getLocalAddr()为0.0.0.0,而不是本地ip地址
原因:这种情况只有在服务器和客户端都在同一台电脑上才会出现,即采用localhost进行页面访问的时出现。具体原因是因为C:\Windows\System32\drivers\etc\hosts这个东西作怪。
解决办法:(1)以文本的形式打开,只要注释掉文件中的 # ::1 localhost 这一行即可解决问题。
(2)本机访问的时,不要用localhost访问,用127.0.0.1或本机ip代替
(3)采用${pageContext.request.serverName }替代可以获取到localhost
Ⅱ 服务器如何获取客户端的IP地址,并与客户端建立TCP连接
客户端的IP自动获取,关键要看客户端的IP是由谁来分配的,如果都是有ISP提供的那么服务器利用IP去连接客户端就不太可能。可以尝试用下面两种思路解决:
1、能否让客户机主动连接服务器。
2、使用动态DNS。让每个客户机都申请一个动态域名,无论它的IP怎样变,当改变以后都会到DNS服务器进行注册,然后服务器使用主机的名字访问客户端。
Ⅲ 如何获取客户端和服务器ip地址
您好,.X.XXX.XXX系列IP,而这个函数获取的是局域网网关出口的IP地址,如果访问者使用代理服务器,将不获取代理服务器的IP,而是获取访问者网关的真实IP。如果将这个函数应用到限IP访问的网页中,别人即使通过限IP访问段中的代理服务器,也不能访问该页面。
下面提供一个函数:<?php
// 定义一个函数getIP()
function getIP(){global $ip;
if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");else$ip = "Unknow";
return $ip;}
// 使用方法:
echo getIP();?>
getenv("REMOTE_ADDR")用来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 getenv("HTTP_X_FORWARDED_FOR") 来读取。
但是如果客户端没有通过代理服务器来访问,那么用getenv("HTTP_X_FORWARDED_FOR") 取到的值将是空的。
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
表示如果getenv("HTTP_X_FORWARDED_FOR") 取到的值存在不为空(即客户端使用代理服务器的情况下),则变量$ip等于getenv("HTTP_X_FORWARDED_FOR") 取到的真实IP值。
如果上面的else if(getenv("HTTP_X_FORWARDED_FOR"))取得的值为空(即没有使用代理服务器),则不会执行下面的$ip = getenv("HTTP_X_FORWARDED_FOR");这一行语句。
这种情况下已经确认客户端没有使用代理服务器,从而通过
else if(getenv("REMOTE_ADDR"))
这两行语句获得客户端的IP地址也是真实的IP地址。
Ⅳ 如何获得Socket连接客户端的IP地址
如果服务器端要获取客户端ip的话:
//假设socket(),bind(),listen()函数已经完成
addrlen=sizeof(client);
connetfd=accept(listenfd,(structsockaddr*)&client,&addrlen);
那么client.sin_port 就是客户端的端口
client.sin_addr.s_addr 就是客户端的ip。
这两个都是以网络字节序来保存的,如果要printf的话需要先转化为主机字节序
Ⅳ 通常说的服务器获取客户端电脑的IP指的是"IPv4地址",还是"DNS服务器"地址
电脑是从DHCP服务器获得ip地址以及dns地址。
所以电脑不需要手动设置。
直接从服务器获得。
Ⅵ PHP获取客户端IP是127.0.0.1 什么原因
127.0.0.1 是具有特殊含义的 IP 地址,代表的是本机。所以如果是在本地进行PHP测试(即服务器与客户端在一台电脑上),可能返回的就是这个地址。
Ⅶ 如何获取cas应用中的服务器和客户端地址
0
pter的updatecount方法,final ClientInfo clientInfo = ClientInfoHolder.getClientInfo();这行代码是获取客户端IP和服务端IP
Ⅷ asp.net网站发布到服务器之后,获取的客户端IP都是127.0.0.1,为什么
publicstringIPAddress()
{
stringresult=String.Empty;
result=HttpContext.Current.Request.ServerVariables["HTTP_VIA"];
if(!string.IsNullOrEmpty(result))
{
result=HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if(!string.IsNullOrEmpty(result))
{
//可能有代理
if(result.IndexOf(".")==-1)//没有"."肯定是非IPv4格式
result=null;
else
{
if(result.IndexOf(",")>=0)
{
//有",",估计多个代理。取第一个不是内网的IP。
result=result.Replace("","").Replace("'","").Replace(";","");
string[]temparyip=result.Split(',');
for(inti=0;i<temparyip.Length;i++)
{
if(IsIPAddress(temparyip[i]))
{
if(!temparyip[i].StartsWith("10.")&&!temparyip[i].StartsWith("192.168")&&!temparyip[i].StartsWith("172.16."))
{
result=temparyip[i];//找到不是内网的地址
break;
}
}
}
}
if(!IsIPAddress(result))//代理即是IP格式
{
result=null;//代理中的内容非IP,取IPk
}
}
}
}
else
{
result=HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if(string.IsNullOrEmpty(result))
{
result=HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if(string.IsNullOrEmpty(result))
{
result=HttpContext.Current.Request.UserHostAddress;
}
if(string.IsNullOrEmpty(result))
{
result="000.000.000.000";
}
returnresult;
}
Ⅸ 服务器端如何获取客户端的mac地址
放在服务器上当然获取不到,必须要在本地。
所以很多网站说为了安全,一般都说要安装什么插件之类,这些插件中,有的就包含了mac的插件。