一、IP地址和埠號
在了解Java獲取本機IP地址前,我們應該先了解下IP地址和埠號。
IP地址是指互聯網協議地址,它用於標識一個設備在網路中的位置。在IPv4中,它是由32位二進位數表示;在IPv6中,它是由128位二進位數表示。而埠號則是用於標識進程的邏輯地址,它是由16位二進位數表示。
在Java中,我們可以使用 InetAddress 類來獲取本機IP地址。
二、InetAddress類
InetAddress 類用於獲取和操作IP地址和DNS信息。我們可以通過 InetAddress 類的靜態方法來獲取本機的IP地址。
import java.net.*; public class IPAddress { public static void main(String[] args) throws UnknownHostException { InetAddress myIP = InetAddress.getLocalHost(); System.out.println("My IP Address is:"); System.out.println(myIP.getHostAddress()); } }
運行以上代碼,我們可以得到本機的IP地址:
My IP Address is: 192.168.1.100
我們也可以通過以下代碼獲取本機的主機名:
import java.net.*; public class Hostname { public static void main(String[] args) throws UnknownHostException { InetAddress myIP = InetAddress.getLocalHost(); System.out.println("My Hostname is:"); System.out.println(myIP.getHostName()); } }
運行以上代碼,我們可以得到本機的主機名:
My Hostname is: DESKTOP-ABCDE
三、NetworkInterface類
除了使用 InetAddress 類獲取本機的IP地址,還可以使用 NetworkInterface 類來獲取本機的IP地址。NetworkInterface 類用於表示一個網路介面,如網卡、無線網卡等。
import java.net.*; import java.util.Enumeration; public class NetworkInterfaceTest { public static void main(String[] args) throws SocketException { Enumeration ifaceList = NetworkInterface.getNetworkInterfaces(); while (ifaceList.hasMoreElements()) { NetworkInterface iface = ifaceList.nextElement(); System.out.println(iface.getName() + ":"); Enumeration addressList = iface.getInetAddresses(); while (addressList.hasMoreElements()) { InetAddress address = addressList.nextElement(); System.out.println(" " + address.getHostAddress()); } } } }
運行以上代碼,我們可以得到本機的所有IP地址:
eth0: 192.168.1.100 lo: 127.0.0.1
四、總結
通過 InetAddress 類和 NetworkInterface 類可以很方便地獲取本機的IP地址。在實際開發中,我們需要根據具體的需求來選擇使用哪種方法來獲取IP地址。
原創文章,作者:WGSX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/145436.html