java基础篇---网络编程(IP与URL)
一:IP與InetAddress
在Java中支持網(wǎng)絡(luò)通訊程序的開發(fā),主要提供了兩種通訊協(xié)議:TCP協(xié)議,UDP協(xié)議
- 可靠地連接傳輸,使用三方握手的方式完成通訊
- 不可靠的連接傳輸,傳輸?shù)臅r候接受方不一定可以接受的到
在Java中的所有網(wǎng)絡(luò)程序的開發(fā)類都在java.net包中存在
IP地址簡介
- IP地址是指互聯(lián)網(wǎng)協(xié)議地址(英語:Internet Protocol Address,又譯為網(wǎng)際協(xié)議地址),是IP Address的縮寫。IP地址是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個網(wǎng)絡(luò)和每一臺主機(jī)分配一個邏輯地址,以此來屏蔽物理地址的差異。
IP地址表示
- IP地址是一個32位的二進(jìn)制數(shù),通常被分割為4個“8位二進(jìn)制數(shù)”(也就是4個字節(jié))。IP地址通常用“點(diǎn)分十進(jìn)制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進(jìn)制整數(shù)。例:點(diǎn)分十進(jìn)IP地址(100.4.5.6)
IP地址格式
- ?IP地址=網(wǎng)絡(luò)地址+主機(jī)地址
- 網(wǎng)絡(luò)號:用于識別主機(jī)所在的網(wǎng)絡(luò)
- 主機(jī)號:用于識別該網(wǎng)絡(luò)中的主機(jī)
IP地址中存在掩碼的功能主要區(qū)分網(wǎng)絡(luò)號和主機(jī)號
IP地址分類
最初設(shè)計互聯(lián)網(wǎng)絡(luò)時,為了便于尋址以及層次化構(gòu)造網(wǎng)絡(luò),每個IP地址包括兩個標(biāo)識碼(ID),即網(wǎng)絡(luò)ID和主機(jī)ID。同一個物理網(wǎng)絡(luò)上的所有主機(jī)都使用同一個網(wǎng)絡(luò)ID,網(wǎng)絡(luò)上的一個主機(jī)(包括網(wǎng)絡(luò)上工作站,服務(wù)器和路由器等)有一個主機(jī)ID與其對應(yīng)。Internet委員會定義了5種IP地址類型以適合不同容量的網(wǎng)絡(luò),即A類~E類。 其中A、B、C3類(如下表格)由InternetNIC在全球范圍內(nèi)統(tǒng)一分配,D、E類為特殊地址。?
| 類別 | 最大網(wǎng)絡(luò)數(shù) | IP地址范圍 | 最大主機(jī)數(shù) | 私有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.255 |
特殊的網(wǎng)址
InetAddress
InetAddress類主要表示IP地址,這個類有兩個子類:Inet4Address,Inet6Address,一個用于表示IPV4,另一個表示IPV6協(xié)議
隨著網(wǎng)絡(luò)上的主機(jī)越來越多,IPV4地址不足夠表示,然后產(chǎn)生了IPV6了
InetAddress類的具體方法可查詢API
本機(jī)IP查詢
package com.oumyye.網(wǎng)絡(luò)編程; import java.net.InetAddress ;public class InetAddressDemo{public static void main(String args[]) throws Exception {// 所有異常拋出InetAddress locAdd = null ;locAdd = InetAddress.getLocalHost() ;// 得到本機(jī)System.out.println("本機(jī)的IP地址:" + locAdd.getHostAddress()) ;System.out.println("本機(jī)是否可達(dá):" + locAdd.isReachable(5000)) ;} };URL
統(tǒng)一資源定位符是對可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址。互聯(lián)網(wǎng)上的每個文件都有一個唯一的URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。,可以直接使用此類找到互聯(lián)網(wǎng)上的資源
package com.oumyye.網(wǎng)絡(luò)編程;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) ; // 實(shí)例化Scanner類scan.useDelimiter("\n") ; // 設(shè)置讀取分隔符while(scan.hasNext()){System.out.println(scan.next()) ;}} };URLConnection是封裝遠(yuǎn)程網(wǎng)絡(luò)資源的一般方法類,通過它可以與遠(yuǎn)程服務(wù)器連接,檢查遠(yuǎn)程資源的一些屬性
package com.oumyye.網(wǎng)絡(luò)編程;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.oumyye.com") ;URLConnection urlCon = url.openConnection() ; // 建立連接System.out.println("內(nèi)容大小:" + urlCon.getContentLength()) ;System.out.println("內(nèi)容類型:" + urlCon.getContentType()) ;} };?
URLEncoder與URLDecocder
具體內(nèi)容
Encoder最早是從電報中而來,使用Encoder進(jìn)行編碼,而使用Decoder進(jìn)行解碼操作在網(wǎng)絡(luò)中常存在這樣的編碼和解碼的操作。
在使用URL訪問的時候,經(jīng)常會看到在地址之后會有很多其他的附帶信息。
例如:http://www.baidu.com/index.php?tn=87041025_adr&ch=33
編碼實(shí)例
package com.oumyye.網(wǎng)絡(luò)編程; 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") ; // 進(jìn)行編碼的操作System.out.println("編碼之后的內(nèi)容:" + encod) ;String decod = URLDecoder.decode(encod,"UTF-8") ; // 進(jìn)行解碼操作System.out.println("解碼之后的內(nèi)容:" + decod) ;} };?
轉(zhuǎn)載于:https://www.cnblogs.com/oumyye/p/4266021.html
總結(jié)
以上是生活随笔為你收集整理的java基础篇---网络编程(IP与URL)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英雄群侠传之全真教绝学[空明拳]和[左右
- 下一篇: 冷酷霸气的三个字网名大全149个