Java網路程式設計——InetAddress類和URL類
阿新 • • 發佈:2019-01-06
一、InetAddress類與URL類
Java中用InetAddress類表示網際網路協議(IP)地址,用URL類表示一個統一資源定位符,它是指向網際網路上某一資源的“指標”。IP 地址是 IP 使用的 32 位或 128 位無符號數字,它是一種低階協議,UDP 和 TCP 協議都是在它的基礎上構建的。URL由兩部分組成:協議名稱和資源名稱,中間用冒號隔開。
二、InetAddress類與URL類的使用
INetAddressDemo.java執行結果: 計算機名:DESKTOP-GF72CKApublic class INetAddressDemo { public static void main(String[] args) throws UnknownHostException { //獲取本機資訊 InetAddress address = InetAddress.getLocalHost(); //獲取計算機名 System.out.println("計算機名:" + address.getHostName()); //獲取計算機的ip地址 System.out.println("IP地址:" + address.getHostAddress()); System.out.println(address); //根據主機名獲取遠端的計算機資訊 InetAddress remoteAddress = InetAddress.getByName("www.baidu.com"); System.out.println("計算機名:" + remoteAddress.getHostName()); System.out.println("IP地址:" + remoteAddress.getHostAddress()); } }
IP地址:192.168.2.202
DESKTOP-GF72CKA/192.168.2.202
計算機名:www.baidu.com
IP地址:111.13.100.92 從執行結果可以看到,直接輸出InetAddress物件結果是主機名/ip地址的形式。 URLDemo.java
執行結果: 協議名:httppublic class URLDemo { public static void main(String[] args) { try { URL host = new URL("http://www.baidu.com"); //?後面表示引數,#後面表示錨點 URL url = new URL(host, "/index.html?username=one#test"); System.out.println("協議名:" + url.getProtocol()); System.out.println("主機名:" + url.getHost()); //如果URL中未指定埠號,則埠號為預設埠號,http的預設埠號是80,URL.getPort()方法預設返回的-1 System.out.println("埠號:" + url.getPort()); System.out.println("路徑名:" + url.getPath()); //如果URL中有查詢字串,則返回路徑名 + 查詢字串,否則返回路徑名 System.out.println("檔名:" + url.getFile()); System.out.println("錨點:" + url.getRef()); System.out.println("查詢字串:" + url.getQuery()); //從指定的地址讀入資訊 InputStream in = host.openStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in, "utf-8")); String data; while((data = reader.readLine()) != null) { System.out.println(data); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
主機名:www.baidu.com
埠號:-1
路徑名:/index.html
檔名:/index.html?username=one
錨點:test
查詢字串:username=one
<!DOCTYPE html><!--STATUS OK--><html>……一系列html資訊,因為太長,這裡省略 剛開始學習的時候,對錨點這個概念不是很熟悉,上網搜尋了相關資料。其中URL.openStream()方法只能接收來自網路資源的資訊,不能傳送資訊,是單向的。如果想要既傳送資訊也接收資訊,則需要使用URL.openConnection()方法,建立一個URLConnection物件,這個物件可以將主機與遠端地址建立連線,進行雙向通訊。