一:IP與InetAddress
在Java中支持網絡通訊程序的開發,主要提供了兩種通訊協議:TCP協議,UDP協議
在Java中的所有網絡程序的開發類都在java.net包中存在
IP地址簡介
IP地址表示
IP地址格式
IP地址中存在掩碼的功能主要區分網絡號和主機號
IP地址分類
最初設計互聯網絡時,為了便於尋址以及層次化構造網絡,每個IP地址包括兩個標識碼(ID),即網絡ID和主機ID。同一個物理網絡上的所有主機都使用同一個網絡ID,網絡上的一個主機(包括網絡上工作站,服務器和路由器等)有一個主機ID與其對應。Internet委員會定義了5種IP地址類型以適合不同容量的網絡,即A類~E類。 其中A、B、C3類(如下表格)由InternetNIC在全球范圍內統一分配,D、E類為特殊地址。 類別 最大網絡數 IP地址范圍 最大主機數 私有IP地址范圍 A 126(2^7-2) 0.0.0.0-127.255.255.255 16777214 10.0.0.0-10.255.255.255 B 16384(2^14) 128.0.0.0-191.255.255.255 65534 172.16.0.0-172.31.255.255 C 2097152(2^21) 192.0.0.0-223.255.255.255 254 192.168.0.0-192.168.255.255InetAddress
InetAddress類主要表示IP地址,這個類有兩個子類:Inet4Address,Inet6Address,一個用於表示IPV4,另一個表示IPV6協議
隨著網絡上的主機越來越多,IPV4地址不足夠表示,然後產生了IPV6了
InetAddress類的具體方法可查詢API
本機IP查詢
package com.linuxidc.網絡編程;
import java.net.InetAddress ;
public class InetAddressDemo{
public static void main(String args[]) throws Exception {// 所有異常拋出
InetAddress locAdd = null ;
locAdd = InetAddress.getLocalHost() ;// 得到本機
System.out.println("本機的IP地址:" + locAdd.getHostAddress()) ;
System.out.println("本機是否可達:" + locAdd.isReachable(5000)) ;
}
};
URL
統一資源定位符是對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標准資源的地址。互聯網上的每個文件都有一個唯一的URL,它包含的信息指出文件的位置以及浏覽器應該怎麼處理它。,可以直接使用此類找到互聯網上的資源
package com.linuxidc.網絡編程;
import java.net.URL ;
import java.io.InputStream ;
import java.util.Scanner ;
public class URLDemo{
public static void main(String args[]) throws Exception { // 所有異常拋出
URL url = new URL("http","www.baidu.com",80,"/") ;
InputStream input = url.openStream() ; // 打開輸入流
Scanner scan = new Scanner(input) ; // 實例化Scanner類
scan.useDelimiter("\n") ; // 設置讀取分隔符
while(scan.hasNext()){
System.out.println(scan.next()) ;
}
}
};
URLConnection是封裝遠程網絡資源的一般方法類,通過它可以與遠程服務器連接,檢查遠程資源的一些屬性
package com.linuxidc.網絡編程;
import java.net.URL ;
import java.net.URLConnection ;
import java.io.InputStream ;
import java.util.Scanner ;
public class URLConnectionDemo{
public static void main(String args[]) throws Exception { // 所有異常拋出
URL url = new URL("http://www.linuxidc.com") ;
URLConnection urlCon = url.openConnection() ; // 建立連接
System.out.println("內容大小:" + urlCon.getContentLength()) ;
System.out.println("內容類型:" + urlCon.getContentType()) ;
}
};
URLEncoder與URLDecocder
具體內容
Encoder最早是從電報中而來,使用Encoder進行編碼,而使用Decoder進行解碼操作在網絡中常存在這樣的編碼和解碼的操作。
在使用URL訪問的時候,經常會看到在地址之後會有很多其他的附帶信息。
例如:http://www.baidu.com/index.php?tn=87041025_adr&ch=33
編碼實例
package com.linuxidc.網絡編程;
import java.net.URLDecoder ;
import java.net.URLEncoder ;
public class CodeDemo{
public static void main(String args[]) throws Exception{
String keyWord = "偶my耶" ;
String encod = URLEncoder.encode(keyWord,"UTF-8") ; // 進行編碼的操作
System.out.println("編碼之後的內容:" + encod) ;
String decod = URLDecoder.decode(encod,"UTF-8") ; // 進行解碼操作
System.out.println("解碼之後的內容:" + decod) ;
}
};