0

構築した Web アプリケーションに接続するクライアントのプライベート IP を検出するのに問題があります。私のテスト結果を見てください(Windowsを実行するマシンで):1-一部のマシン(異なる場所、国から..)では、アプレットは正しいIPを提供しますが、2-他のマシンではip = 127.0.0.1を取得しました: これを解決するために何を試みましたか? A- 例: アバスト プログラム保護 (Web シールド) を停止し、アプレットが正しいプライベート IP を提供し始めました。B- 他のマシンで「ポイント A」を試しましたが、機能しませんでした C- ホスト ファイルも編集しましたが、同様に機能しませんでした

私があなたに必要なのは、何が起こっているのかを理解するのを助けることですか? これを解決するためにどこを見るべきか...「なぜプライベートIPが必要なのですか?それは変わる可能性があります...」と答えないでください...私は私のWebアプリケーションに接続しようとしているすべてのマシンを知っています設定できます。

私のアプレットが使用するソースコードの一部:

private String PrivateIP(boolean flag)
{
    String s1 = "unknown";
    String s2 = getDocumentBase().getHost();
    int i = 80;
    if(getDocumentBase().getPort() != -1)
        i = getDocumentBase().getPort();
    try
    {
        String s = (new Socket(s2, i)).getLocalAddress().getHostAddress();
        if(!s.equals("255.255.255.255"))
            s1 = s;
    }
    catch(SecurityException _ex)
    {
        s1 = "FORBIDDEN";
    }
    catch(Exception _ex)
    {
        s1 = "ERROR";
    }
    if(flag)
        try
        {
            s1 = (new Socket(s2, i)).getLocalAddress().getHostName();
        }
        catch(Exception _ex)
        {
            Stat = "Cannot Lookup this IP";
        }
    return s1;
}

詳細をお知らせします。おそらく他の方法で IP を取得するために、このhttp://www.auditmypc.com/digital-footprint.aspを調べましたが、結果は同じです。httpも実行しました。 //www.auditmypc.com/firewall-test.aspそして、正しいIPを取得できなかったマシンで、「おめでとうございます、開くポートがありません」のようなメッセージを取得しましたxD ...

前もって感謝します!

4

1 に答える 1

1

まず、複数のネットワーク インターフェイスがある場合、クライアントで複数の IP アドレスを使用できます。メソッドによって返されるものはnew Socket()、開くために使用されるものによって異なります。

これで、クライアントの IP を取得するためにソケットを開く必要がなくなりました。代わりにできることは、次のように列挙することです。

String host = InetAddress.getLocalHost().getHostName();

InetAddress[] addressArray = InetAddress.getAllByName(host);

String[] ipArray = new String[addressArray.length];
for (int i = 0; i < addressArray.length; i++) {
    InetAddress addr = addressArray[i];
    ipArray[i] = addr.getHostAddress();
}

return ipArray;

これで、ipArrayクライアントのワークステーションで利用可能な IP アドレスのリストが保持されます。

于 2012-07-13T13:14:34.877 に答える