1、如果服務(wù)器如果沒有采用反向代理,而且客戶端沒有用正向代理的話,那么可以獲取客戶端的真實(shí)IP地址request.getRemoteAddr()
創(chuàng)新互聯(lián)公司專業(yè)提供川西大數(shù)據(jù)中心服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買川西大數(shù)據(jù)中心服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。
2、如果服務(wù)器如果沒有采用反向代理,而且客戶端有用正向代理的話,那么通過request.getRemoteAddr()獲取客戶端的IP地址是客戶端 的代理服務(wù)器的地址,并不是客戶端的真實(shí)地址
3、如果客戶端使用的是多層代理的話,服務(wù)器獲得的客戶端地址是客戶端的最外圍代理服務(wù)器的地址如果服務(wù)器如果采用反向代理服務(wù)器,不管客戶端采用的是何種方式訪問服務(wù)器
import java.net.InetAddress;
import java.util.Enumeration;
import java.net.NetworkInterface;
import java.util.*;
public class ipdisplay {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String allipaddress;
ArrayList ar = new ArrayList();
Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();
while (netInterfaces.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
Enumeration cardipaddress = ni.getInetAddresses();
InetAddress ip = (InetAddress) cardipaddress.nextElement();
if(!ip.getHostAddress().equalsIgnoreCase("127.0.0.1") )
{ ar.add(ni.getName()+":");
allipaddress=ip.getHostAddress();
while(cardipaddress.hasMoreElements())
{
ip = (InetAddress) cardipaddress.nextElement();
allipaddress=allipaddress+" , "+ip.getHostAddress();
}
ar.add(allipaddress);
}
else
continue;
}
for(int i=0;iar.size();)
{
System.out.println(ar.get(i++));
}
}
}
這個(gè)是獲取不到的,因?yàn)橛写怼⒍丝谟成涞鹊绒D(zhuǎn)發(fā)情況的存在。為什么不保存相對(duì)路徑/域名/或者在服務(wù)器上某個(gè)配置文件中配置域名/數(shù)據(jù)庫中一個(gè)表/數(shù)據(jù)庫中某個(gè)字段保存當(dāng)前服務(wù)器的ip地址呢?