3

重複の可能性:
Java でユーザーの IP アドレスを取得する方法
URL 文字列で IP アドレスを取得しますか? (ジャワ)

リンクは:

"http://automation.whatismyip.com/n09230945.asp"

上記のリンクは外部 IP を返します。

上記のリンクのようにIPを取得するために独自のコードを作成しようとしています

私のコードは

文字列 my_own_ip =InetAddress.getLocalHost().getHostAddress();

このIPを取得する方法

このコードでは、内部 IP を返します

LAN 接続を使用しています。LAN IP は 192.168.0.109 です。

外部 IP は 27.54.180.156 です

I want 27.54.180.156

前もって感謝します

4

3 に答える 3

3

使用しないでください-ローカル ホストgetLocalHost()が返されます。

InetAddrsss addy = InetAddress.getByName("www.stackoverflow.com");
System.out.println(addy.getHostAddress());

プロトコルを省略したいことに注意してくださいhttp://:

InetAddrsss addy = InetAddress.getByName("http://www.stackoverflow.com"); // throws an exception
System.out.println(addy.getHostAddress());

...そして同様にパス:

InetAddrsss addy = InetAddress.getByName("www.stackoverflow.com/questions"); // throws an exception
System.out.println(addy.getHostAddress());
于 2012-12-12T04:08:54.103 に答える
1

問題は、コンピュータが外部 IP アドレスにアクセスできると思い込んでいるのに、実際にはアクセスできないことです。ルーターと外部接続のみが IP アドレスにアクセスできます。

そうは言っても、最善の選択肢は、 http ://icanhazip.comhttp://checkip.dyndns.orgなどの Web サイトを使用することです (または、あなたが提供したもの、さらに言えば、 http://automation.whatismyip.com ) /n09230945.asp ) を作成し、この質問またはこの質問のように、Java クライアントで HTTP Get を使用して接続します。HTML ページを取得したら、それを解析して IP アドレスを見つけます。これらは非常に単純な HTML ページであり、大規模な DOM 解析を必要としないため、正規表現を使用してこれを行うことができます。

String html = ... ;
Pattern pattern = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3}");
Matcher matcher = pattern.matcher(html);
matcher.find();
String ip = matcher.group(0);

コツは、何度でも呼び出せる無料の API を備えた Web サイトを見つけることです。上記の 2 つには、私の知る限り制限はありません。

于 2012-12-12T04:52:41.867 に答える
-1

jsp ページでコードの一部を使用して、ドキュメントの本文に出力するだけです。

<%@page import="java.net.InetAddress" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 <% String my_own_ip =InetAddress.getLocalHost().getHostAddress();%>
    <%=my_own_ip%>
</body>
</html>
于 2012-12-12T04:20:46.373 に答える