在Java中提供了專門的網絡開發程序包---java.net,java的網絡編程提供了兩種通信協議:TCP(傳輸控制協議)和UDP(數據報協議)。
一.IP(Internet Protocol) 與InetAddress類
1.IP簡介
互聯網上的每一台計算機都有一個唯一表示自己的標識,即IP地址。
IP地址=網絡地址+主機地址
2.InetAddress
該類主要表示IP地址,有兩個子類:Inet4Address、Inet6Address,前者表示IPV4,後者表示IPV6。
InetAddress類的常用方法有:
類型 方法 描述static InetAddress
getByName(String host)
在給定主機名的情況下確定主機的 IP 地址。
static InetAddress
getLocalHost()
String
getHostName()
獲取此 IP 地址的主機名。
boolean
isReachable(int timeout)
測試是否可以達到該地址。
測試InetAddress類:
package org.demo.net;
import java.net.InetAddress;
/**
* 測試InetAddress類
* @author oushine
*/
public class InetAddressDemo {
public static void main(String[] args) {
try {
//聲明並得到本地InetAddress對象
InetAddress iAddress1=InetAddress.getLocalHost();
//聲明並得到遠程InetAddress對象
InetAddress iAddress2=InetAddress.getByName("www.linuxidc.com");
//獲得本地IP地址
System.out.println("本機IP地址為:"+iAddress1.getHostAddress());
//獲得遠程IP地址
System.out.println("百度的IP地址是:"+iAddress2.getHostAddress());
System.out.println("本機是否可達:"+iAddress1.isReachable(3000));
} catch (Exception e) {
e.printStackTrace();
}
}
}
二.URL與URLConnection
1.URL
URL(Uniform Resource Locator)是統一資源定位符,可以直接使用此類找到互聯網上的資源(比如一個網頁)。
URL類常用方法:
類型 方法 描述 構造方法URL(String spec)
String
表示形式創建 URL
對象。
構造方法
URL(String protocol, String host, int port, String file)
根據指定 protocol
、host
、port
號和 file
創建 URL
對象。
URLConnection
openConnection()
返回一個 URLConnection
對象,它表示到 URL
所引用的遠程對象的連接。
InputStream
openStream()
URL
的連接並返回一個用於從該連接讀入的 InputStream
。
使用URL讀取內容:
package org.demo.net;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;
public class UrlDemo {
public static void main(String[] args) {
URL url;
try {
//指定操作的URL
url = new URL("http","www.linuxidc.com",80,"/index.html");
//打開輸入流,讀取URL內容
InputStream inputStream=url.openStream();
Scanner scan=new Scanner(inputStream);
//設置讀取分隔符
scan.useDelimiter("\n");
while(scan.hasNext()){
//輸出內容
System.out.println(scan.next());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
結果:
顯示出來的是HTML代碼。
2.URLConnection
URLConnection是封裝訪問遠程網絡資源一般方法的類,通過它可以建立與遠程服務器的連接,檢查遠程資源的一些屬性。
常用方法:
類型 方法 描述int
getContentLength()
content-length
頭字段的值。
String
getContentType()
content-type
頭字段的值。
InputStream
getInputStream()
URLConnection對象可以通過URL類的openConnection()方法取得。
取得URL的基本信息:
package org.demo.net;
import java.net.URL;
import java.net.URLConnection;
public class URLConnectionDemo {
public static void main(String[] args) {
try {
URL url=new URL("http://www.linuxidc.com");
//建立連接
URLConnection urlConn=url.openConnection();
System.out.println("內容大小:"+urlConn.getContentLength());
System.out.println("內容類型:"+urlConn.getContentType());
} catch (Exception e) {
e.printStackTrace();
}
}
}
三.URLEncoder與URLDecoder
在java中如果需要完成編碼和解碼操作就要使用URLEncoder和URLDecoder兩個類。
URLEncoder類的方法:
類型 方法 描述static String
encode(String s, String enc)
使用指定的編碼機制將字符串轉換為 application/x-www-form-urlencoded
格式。
URLDecoder類的方法:
類型 方法 描述static String
decode(String s, String enc)
使用指定的編碼機制對 application/x-www-form-urlencoded
字符串解碼。
編碼及解碼操作:
package org.demo.net;
import java.net.URLDecoder;
import java.net.URLEncoder;
public class CodeDemo {
public static void main(String[] args) {
String keyWord="oushine 陽";
try {
String enCode=URLEncoder.encode(keyWord, "UTF-8");
System.out.println("編碼之後:"+enCode);
String deCode=URLDecoder.decode(enCode, "UTF-8");
System.out.println("解碼之後:"+deCode);
} catch (Exception e) {
e.printStackTrace();
}
}
}
運行結果: