1. 程式人生 > >Java網路程式設計——InetAddress類和URL類

Java網路程式設計——InetAddress類和URL類

一、InetAddress類與URL類

Java中用InetAddress類表示網際網路協議(IP)地址,用URL類表示一個統一資源定位符,它是指向網際網路上某一資源的“指標”。IP 地址是 IP 使用的 32 位或 128 位無符號數字,它是一種低階協議,UDP 和 TCP 協議都是在它的基礎上構建的。URL由兩部分組成:協議名稱和資源名稱,中間用冒號隔開。

二、InetAddress類與URL類的使用

INetAddressDemo.java
public 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());
		
	}
}
執行結果: 計算機名:DESKTOP-GF72CKA
IP地址:192.168.2.202
DESKTOP-GF72CKA/192.168.2.202
計算機名:www.baidu.com
IP地址:111.13.100.92 從執行結果可以看到,直接輸出InetAddress物件結果是主機名/ip地址的形式。 URLDemo.java
public 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();
		}
	}
}
執行結果: 協議名:http
主機名:www.baidu.com
埠號:-1
路徑名:/index.html
檔名:/index.html?username=one
錨點:test
查詢字串:username=one
<!DOCTYPE html><!--STATUS OK--><html>……一系列html資訊,因為太長,這裡省略 剛開始學習的時候,對錨點這個概念不是很熟悉,上網搜尋了相關資料。其中URL.openStream()方法只能接收來自網路資源的資訊,不能傳送資訊,是單向的。如果想要既傳送資訊也接收資訊,則需要使用URL.openConnection()方法,建立一個URLConnection物件,這個物件可以將主機與遠端地址建立連線,進行雙向通訊。