-1

ユーザーのローカル IP を見つける必要があります。サーバーはルーターの背後にあるため、サーバー側の方法は使用できません。http://jsonip.appspot.com/また、テストしたところサーバーが時々ダウンするため、サードパーティのサービスも使用したくありません。

Javaを使用して、IIは次のような方法でIPを取得したい

<script type="text/javascript">
        function myIP() {
            var yip2 = java.net.InetAddress.getLocalHost();
            var yip = yip2.getHostAddress();
            return yip;
        } //end myIP

        alert("your machine's local network IP is " + myIP())
    </script>

しかし、それは機能していません。どうすれば機能しますか?

4

3 に答える 3

1
  1. サーバーサイドなし
  2. サードパーティはありません

あなたがすでに提供したものに「行き詰まっている」ように聞こえます。あなたのスクリプトは実際に私に興味をそそられました。一見すると、サーバーとクライアント(javaとjavascript)+すべてのコメントがそれを指しているように見えたからです。しかし、好奇心は良いことです:)

どうやら、実際には信頼できるわけではありませんが、サポートするブラウザでJavaメソッドを呼び出すことができます。Javaはクライアント側でもあります(失われた概念)。

私はこれをコピーして貼り付けます、私は試したことがありません(私はあなたと同じように制限されたことがないため):

if (java && java.net)
ip = ''+java.net.InetAddress.getLocalHost().getHostAddress();
else ip = 'unknown';

About.comからの抜粋-少なくとも動作する機会を与えるために何をする必要があるかについても説明しています(アップロード、ローカルからは実行できません)。


アップデート:

忘れてください。@Esailijaが指摘しているように、私は(そもそも)Javaの男ではありませんが、上記のスクリプトは(もはや)機能しません。

2.1.5非推奨の機能:グローバルパッケージ、javaおよびnetscapeキーワード

Mozillaファミリのブラウザは、Javaアプレットを含まないWebページでも、JavaScriptからJava言語へのアクセスをサポートしてきました。このブラウザファミリには、JavaScriptコードで使用できるグローバルjava、netscape、Packagesキーワードがあり、静的メソッドの呼び出し、静的フィールドへのアクセス、および上記のアプレットごとのPackagesキーワードと同様の方法でJavaクラスの新しいインスタンスを作成できます。

これらのキーワードのセマンティクスは、Webページで複数のアプレットが使用可能な場合に問題になります。特定のアプレットのユーザー定義クラス(たとえば、com.mycompanyパッケージ内)にアクセスする場合、グローバルパッケージキーワードはどのアプレットを参照するかをどのように認識しますか?新しいJavaプラグインは、アプレットを実行するために複数のJava仮想マシンインスタンスをWebブラウザに接続することもサポートしています。この状況では、これらのグローバルキーワードのセマンティクスはさらに複雑になります。

このため、グローバルjava、netscape、PackagesJavaScriptキーワードは非推奨になりました。これらはFirefoxブラウザーで引き続き機能しますが、これらを使用して既存のコードを移行し、新しいアプレットごとのパッケージキーワードを使用することを強くお勧めします。これらのグローバルキーワードを使用してユーザー定義クラスにアクセスすることはできません。そうしようとすると、未定義の結果が生成されます。

ここで参照

于 2013-02-06T12:46:14.127 に答える
1

私はあなたが尋ねたことにこれを使用しました:

http://jsonip.appspot.com/?callback=getip

このコードを試してください:

<script type="application/javascript">
    function getip(json){
      //json.ip will have the client IP and this will alert it
      alert(json.ip);
    }
</script>

<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>

これはJavaとは何の関係もありませんでした(java-scriptは別のものです)

于 2013-02-06T12:02:41.267 に答える
0

The server is behind a router

Configure the router to add the X-Forwarded-For header. That contains the IP (or a chain of IPs in a "proper" implementation) the router forwarded the request for, I.E. the client IP. Now, the client IP could of course be another proxy as well but yeah.

于 2013-02-06T12:14:56.967 に答える