Javaコードを使用して、このアプリケーションを実行している現在のマシンのデフォルトのネットワークインターフェイスを検索しようとしています。Javaからデフォルトのネットワークインターフェイスを取得する
私の方法です。私は現在eth0
を探しています。しかし、私がMacでローカルに実行している場合は、en0: Wi-Fi (AirPort)
を使いたいかもしれません。 Javaを介してデフォルトのネットワークインタフェースに完全に解決する方法はありますか?
private String getDefaultNetworkInterface() {
try {
final Enumeration<NetworkInterface> netifs = NetworkInterface.getNetworkInterfaces();
while (netifs.hasMoreElements()) {
NetworkInterface networkInterface = netifs.nextElement();
if (networkInterface.getName().toLowerCase().contains("eth0")) {
return networkInterface.getName();
}
}
} catch (Exception e) {
logger.error(e);
}
return null;
}
次のような何かを行うことができ、現在のマシンのIPアドレスを持っていると仮定すると? –
@ThorbjørnRavnAndersen外部の世界と通信するために使用されているもののうち、例えば 'eth0'や' en0'のような主要なもの – Ramie
この場合、より多くの情報、すなわちルーティングテーブルが必要です。 'netstat -rn'(またはそれに類するもの)の出力のデフォルトゲートウェイを探します。これはかなり複雑になり、また時間とともに変化することに注意してください。あなたが解決する必要がある問題は何ですか? –