JAVA深化篇_36—— Java網絡編程中的常用類
Java網絡編程中的常用類
Java為了跨平臺,在網絡應用通信時是不允許直接調用操作系統接口的,而是由java.net包來提供網絡功能。下面我們來介紹幾個java.net包中的常用的類。
InetAddress的使用
作用:封裝計算機的IP地址和DNS(沒有端口信息)
注:DNS是Domain Name System,域名系統。
特點:
這個類沒有構造方法。如果要得到對象,只能通過靜態方法:getLocalHost()、getByName()、 getAllByName()、 getAddress()、getHostName()
獲取本機信息
獲取本機信息需要使用getLocalHost方法創建InetAddress對象。getLocalHost()方法返回一個InetAddress對象,這個對象包含了本機的IP地址,計算機名等信息。
1public class InetTest {
2 public static void main(String[] args)throws Exception {
3 //實例化InetAddress對象
4 InetAddress inetAddress = InetAddress.getLocalHost();
5 //返回當前計算機的IP地址
6 System.out.println(inetAddress.getHostAddress());
7 //返回當前計算機名
8 System.out.println(inetAddress.getHostName());
9 }
10}
根據域名獲取計算機的信息
根據域名獲取計算機信息時需要使用getByName(“域名”)方法創建InetAddress對象。
1public class InetTest2 {
2 public static void main(String[] args)throws Exception {
3 InetAddress inetAddress = InetAddress.getByName("www.baidu.com");
4 System.out.println(inetAddress.getHostAddress());
5 System.out.println(inetAddress.getHostName());
6 }
7}
根據IP獲取計算機的信息
根據IP地址獲取計算機信息時需要使用getByName(“IP”)方法創建InetAddress對象。
1public class InetTest3 {
2 public static void main(String[] args)throws Exception {
3 InetAddress inetAddress = InetAddress.getByName("14.215.177.38");
4 System.out.println(inetAddress.getHostAddress());
5 System.out.println(inetAddress.getHostName());
6 }
7}
InetSocketAddress的使用
**作用:**包含IP和端口信息,常用于Socket通信。此類實現 IP 套接字地址(IP 地址 + 端口號),不依賴任何協議。
InetSocketAddress相比較InetAddress多了一個端口號,端口的作用:一臺擁有IP地址的主機可以提供許多服務,比如Web服務、FTP服務、SMTP服務等,這些服務完全可以通過1個IP地址來實現。
那么,主機是怎樣區分不同的網絡服務呢?顯然不能只靠IP地址,因為IP 地址與網絡服務的關系是一對多的關系。實際上是通過“IP地址+端口號”來區分不同的服務的。
1public class InetSocketTest {
2 public static void main(String[] args) {
3 InetSocketAddress inetSocketAddress = new InetSocketAddress("www.baidu.com",80);
4 System.out.println(inetSocketAddress.getAddress().getHostAddress());
5 System.out.println(inetSocketAddress.getHostName());
6 }
7}
URL的使用
IP地址標識了Internet上唯一的計算機,而URL則標識了這些計算機上的資源。 URL 代表一個統一資源定位符,它是指向互聯網“資源”的指針。資源可以是簡單的文件或目錄,也可以是對更為復雜的對象的引用,例如對數據庫或搜索引擎的查詢。
為了方便程序員編程,JDK中提供了URL類,該類的全名是java.net.URL,有了這樣一個類,就可以使用它的各種方法來對URL對象進行分割、合并等處理。
1public class UrlTest {
2 public static void main(String[] args)throws Exception {
3 URL url = new URL("https://www.itbaizhan.com/search.html?kw=java");
4 System.out.println("獲取與此URL相關聯協議的默認端口:"+url.getDefaultPort());
5 System.out.println("訪問資源:"+url.getFile());
6 System.out.println("主機名"+url.getHost());
7 System.out.println("訪問資源路徑:"+url.getPath());
8 System.out.println("協議:"+url.getProtocol());
9 System.out.println("參數部分:"+url.getQuery());
10 }
11}
通過URL實現最簡單的網絡爬蟲
1public class UrlTest2{
2 public static void main(String[] args)throws Exception {
3 URL url = new URL("https://www.baidu.com/");
4 try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) {
5 StringBuilder sb = new StringBuilder();
6 String temp;
7 /*
8 * 這樣就可以將網絡內容下載到本地機器。
9 * 然后進行數據分析,建立索引。這也是搜索引擎的第一步。
10 */
11 while ((temp = br.readLine()) != null) {
12 sb.append(temp);
13 }
14 System.out.println(sb);
15
16 } catch (Exception e) {
17 e.printStackTrace();
18 }
19 }
20}
浙公網安備 33010602011771號