標籤:網路編程 java inetaddress ip host
在網路編程中,為了訪問某台主機,我們必須知道其IP地址。在Java中,就將擷取IP地址的操作封裝成了一個類——InetAddress,通過該類很方便地擷取IP。
下面看看如何利用該類的方法來擷取本地主機的IP
import java.net.*;class IPDemo {public static void main(String[] args) throws UnknownHostException{InetAddress ina = InetAddress.getLocalHost();System.out.println(ina.toString());}}
該類沒有構造方法,只能通過靜態方法getLocalHost來擷取該類的執行個體對象,在擷取主機時必須要聲明UnknownHostException異常。結果如下:
如果想要單獨列印主機名稱和主機地址,如下:
import java.net.*;class IPDemo {public static void main(String[] args) throws UnknownHostException{InetAddress ina = InetAddress.getLocalHost();String name = ina.getHostName();String addr = ina.getHostAddress();System.out.println(ina.toString());System.out.println(name);System.out.println(addr);}}
通過執行個體方法getHostName和getHostAddress就能分別擷取到主機名稱和主機地址,結果如下:
這是擷取本地主機,那如果要擷取非本地主機怎麼辦呢,繼續看吧!
import java.net.*;class IPDemo {public static void main(String[] args) throws UnknownHostException{InetAddress ina = InetAddress.getByName("www.baidu.com");//也可以直接用IP:180.97.33.107String name = ina.getHostName();String addr = ina.getHostAddress();System.out.println(ina.toString());System.out.println(name);System.out.println(addr);}}
可以看到,只是利用了getByName方法,其餘都是一樣的,該方法有一個參數,參數為指定主機的IP或網域名稱,結果如下:
當然,百度的IP應該不止一個,想要擷取全部的,應該怎麼做呢?
import java.net.*;class IPDemo {public static void main(String[] args) throws UnknownHostException{InetAddress[] inas = InetAddress.getAllByName("www.baidu.com");for (int i = 0; i < inas.length; i++){System.out.println(inas[i].toString());}}}
看看結果:
類似的,還有:
Java網路編程——擷取IP