Java でホスト名を取得する最良の方法は何ですか?
Java プログラムを作成するとき、場合によっては、ホスト名を取得する必要があることがあります。現在のコンピューター。このタスクにはいくつかのアプローチがありますが、次の 2 つの一般的な方法があります。
Runtime.getRuntime().exec("hostname")
InetAddress.getLocalHost().getHostName()
オプションを理解する
最初のメソッド Runtime.getRuntime() .exec("hostname") は、hostname コマンドライン ユーティリティを利用してホスト名を取得します。ただし、このアプローチはオペレーティング システムの hostname コマンドの実装に依存しており、プラットフォームごとに異なる場合があります。
2 番目のメソッド InetAddress.getLocalHost().getHostName() は、ローカル IP に基づいてホスト名を取得します。住所。この方法は移植性が高くなりますが、潜在的な欠点があります。
決定的な解決策
最も信頼性が高く移植性の高いアプローチである gethostname C 関数を使用することをお勧めします。この関数は Unix ベースのシステムでネイティブに使用できます。 Java プログラムは、ネイティブ C 関数への Java インターフェイスを提供する jna ライブラリを通じてこの関数にアクセスできます。次のコード スニペットは、Java で gethostname を使用する方法を示しています:
<code class="java">import com.sun.jna.Native; import com.sun.jna.ptr.PointerByReference; public class GetHostname { public static void main(String[] args) { // Load the CLibrary interface CLibrary libc = (CLibrary) Native.loadLibrary("c", CLibrary.class); // Create a buffer to store the hostname PointerByReference hostname = new PointerByReference(); // Get the hostname libc.gethostname(hostname, 256); // Convert the hostname to a String String hostnameStr = hostname.getValue().getString(0, 256); // Print the hostname System.out.println("Hostname: " + hostnameStr); } public interface CLibrary extends Library { int gethostname(PointerByReference hostname, int buflen); } }</code>
以上が以下に、信頼性と移植性の側面に焦点を当てた、Java ホスト名に関する記事の質問ベースのタイトルをいくつか示します。 * Java でホスト名を取得する最も信頼できる方法は何ですか? (ダイレクトでフォーカスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。