Rumah > Java > javaTutorial > Bagaimana untuk Menentukan Alamat IP Luaran Mesin dengan Boleh Dipercayai di Java?

Bagaimana untuk Menentukan Alamat IP Luaran Mesin dengan Boleh Dipercayai di Java?

DDD
Lepaskan: 2024-12-14 16:28:11
asal
689 orang telah melayarinya

How to Reliably Determine a Machine's External IP Address in Java?

Menentukan Alamat IP Mesin Semasa di Java

Konteks:

Dalam sistem teragih dengan berbilang nod, setiap nod memerlukan alamat IP yang unik untuk berkomunikasi dengan berkesan. Alamat IP ini mesti didaftarkan dengan nod bootstrap pusat untuk sambungan yang lancar. Walau bagaimanapun, mendapatkan alamat IP yang betul boleh mencabar kerana kemungkinan komplikasi dengan konfigurasi rangkaian.

Masalah:

Pendekatan lalai menggunakan InetAddress.getLocalHost().getHostAddress( ) selalunya mengembalikan alamat IP LAN dan bukannya alamat IP PPP luaran. Ketidakpadanan ini menimbulkan kesukaran apabila nod cuba menyambung ke nod bootstrap atau nod lain.

Penyelesaian 1: Pengiraan Antara Muka Rangkaian

Untuk mendapatkan semula semua alamat IP tersedia yang dikaitkan dengan mesin, gunakan kod berikut:

Enumeration e = NetworkInterface.getNetworkInterfaces();
while (e.hasMoreElements()) {
    NetworkInterface n = (NetworkInterface) e.nextElement();
    Enumeration ee = n.getInetAddresses();
    while (ee.hasMoreElements()) {
        InetAddress i = (InetAddress) ee.nextElement();
        System.out.println(i.getHostAddress());
    }
}
Salin selepas log masuk

Pendekatan ini menyediakan senarai lengkap semua alamat IP. Walau bagaimanapun, membezakan alamat IP yang betul tetap mencabar.

Penyelesaian 2: Pembezaan Jenis Alamat IP

Tentukan jenis alamat IP berdasarkan julat nilainya:

  • Gelung belakang: 127.xxx.xxx.xxx
  • Persendirian (LAN): 192.168.xxx.xxx
  • Pautan setempat: 169.254.xxx.xxx
  • Multicast: 224.xxx.xxx .xxx - 239.xxx.xxx.xxx
  • Siaran: 255.255.255.255

InetAddress API menyediakan kaedah untuk menguji setiap jenis alamat untuk mengenal pasti alamat yang paling sesuai.

Penyelesaian 3: Pengambilan FQDN Luaran

Dapatkan nama domain berkelayakan sepenuhnya yang diiklankan secara luaran (FQDN) dan gunakannya untuk mencari alamat IP utama:

InetAddress inetAddress = InetAddress.getByName("myFQDN");
String ipv4Address = inetAddress.getHostAddress();
Salin selepas log masuk

Kaedah ini bergantung pada resolusi DNS dan mungkin tidak boleh dilaksanakan dalam semua senario, terutamanya dengan adanya pengimbang beban.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Alamat IP Luaran Mesin dengan Boleh Dipercayai di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan