私が大学にいた場合、特定のコードをアクティブにするように求められました。そのため、大学の IP と一致する場所の IP を見つける必要があります。Javaでこれを行う方法を知りたいですか?ループバック インターフェイスは既に試しました。
3 に答える
各インターフェイスで使用NetworkInterface.getNetworkInterfaces()
および呼び出しgetInetAddresses()
を行うと、コンピューターに割り当てられているすべての IP アドレスを確認できます。大学の範囲内に IP があるかどうかを確認するには、次のようにします。
boolean onCampusNetwork() {
for(Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements();) {
NetworkInterface iface = ifaces.nextElement();
for(Enumeration<InetAddress> addresses = iface.getInetAddresses(); addresses.hasMoreElements;) {
InetAddress address = addresses.nextElement();
// return true if address is in the university's range; something like:
if(address.toString().startsWith("10.0")) {
return true;
}
}
}
// None of the IP addresses were in the university's range.
return false;
}
私はこのコードを実行していませんが、必要なことは実行するはずです。
自動プロキシ検出と構成のためのある種のプロトコルがあるはずではありませんか? あなたの大学はすでにこれをセットアップしていますか?その場合、コードが正しい設定を検出し、設定をオーバーライドするオプションがあればより良いでしょう。
あなたのパブリックIP(またはゲートウェイのパブリックIP、あなたが望むものだと思います)を提供するあらゆる種類のWebサイトがあります。これらのサイトの 1 つに HTTP 接続を確立し、その情報を含むページを取得するようにプログラムに指示することができます。これらのサイトは非常に予測可能な形式であるため、結果は 1 つまたは 2 つの正規表現で非常に簡単に解析できます。ただし、これはインターネットに接続している場合にのみ機能します。
または、大学のイントラネット サーバーのいずれかに接続を試みるようにプログラムを設定することもできます。外部からアクセスできないサイトに接続できる場合、それは LAN 上にあります。