クライアントのIPアドレスを取得する必要があるJava Webアプリケーション(サーブレット)を開発しようとしています。
私はstackoverflowで利用可能なすべての可能な答えを試したので、これを重複した質問とみなさないでください。
以下はこれまでの私のコードです:
1)
String ipAddress = request.getRemoteAddr();
この場合、ほとんどの本は「デフォルトゲートウェイアドレス」(147.120.1.5)を取得します。私のマシンのIPアドレス(174.120.100.17)ではありません。
2)
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
この場合、ほとんどの本は「デフォルトゲートウェイアドレス」(147.120.1.5)を取得します。私のマシンのIPアドレス(174.120.100.17)ではありません。
)
InetAddress IP=InetAddress.getLocalHost();
System.out.println(IP.getHostAddress());
この場合、サーバーのIPアドレス(147.120.20.1)を取得しました。
147.120.100.17のIPアドレス。実際のクライアントIPアドレスを取得する方法がわかりません。答えてください。
どうもありがとうございました。
これを試して、
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
参照: http://www.mkyong.com/Java/how-to-get-client-ip-address-in-Java/
これを試してください。すべての条件について
private static final String[] HEADERS_TO_TRY = {
"X-Forwarded-For",
"Proxy-Client-IP",
"WL-Proxy-Client-IP",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_X_CLUSTER_CLIENT_IP",
"HTTP_CLIENT_IP",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_VIA",
"REMOTE_ADDR"};
private String getClientIpAddress(HttpServletRequest request) {
for (String header : HEADERS_TO_TRY) {
String ip = request.getHeader(header);
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
}
return request.getRemoteAddr();
}
場合には、Dev-environmentのIPアドレスを取得しようとしているので、これを使用できます。
_public String processRegistrationForm(HttpServletRequest request)
{
String appUrl = request.getScheme() + "://"+ request.getLocalAddr();
return appUrl;
}
_
request.getLocalAddr()
は、リクエスト受信システムのIPアドレスを返します。
それが役に立てば幸い。
import Java.net.UnknownHostException;
/**
* Simple Java program to find IP Address of localhost. This program uses
* InetAddress from Java.net package to find IP address.
*
*/
public class IPTest {
public static void main(String args[]) throws UnknownHostException {
InetAddress addr = InetAddress.getLocalHost();
//Getting IPAddress of localhost - getHostAddress return IP Address
// in textual format
String ipAddress = addr.getHostAddress();
System.out.println("IP address of localhost from Java Program: " + ipAddress);
//Hostname
String hostname = addr.getHostName();
System.out.println("Name of hostname : " + hostname);
}
}
出力:
IP address of localhost from Java Program: 190.12.209.123
Name of hostname : PCLOND3433