20145325張梓靖 《Java程序設計》第10周學習總結
20145325張梓靖 《Java程序設計》第10周學習總結
教材學習內容總結
- 網絡編程 網絡編程的實質就是兩個(或多個)設備(例如計算機)之間的數據傳輸。
- 計算機網絡 路由器和交換機組成了核心的計算機網絡,計算機只是這個網絡上的節點以及控制等,經過光纖、網線等鏈接將設備鏈接起來,從而造成了一張巨大的計算機網絡。
- 共享 網絡最主要的優點在於共享:共享設備和數據,如今共享設備最多見的是打印機。
- IP地址 對於網絡編程來講,最主要的是計算機和計算機之間的通訊,這樣首要的問題就是如何找到網絡上的計算機呢?這就須要瞭解IP地址的概念。網絡中的每一個設備都會有一個惟一的數字標識,這個就是IP地址。在計算機網絡中,如今命名IP地址的規定是IPv4協議,該協議規定每一個IP地址由4個0-255之間的數字組成,例如10.0.120.34。每一個接入網絡的計算機都擁有惟一的IP地址,這個IP地址多是固定的,也能夠是動態的。
- 域名可是因爲IP地址不容易記憶,因此爲了方便記憶,有創造了另一個概念——域名(Domain Name),例如sohu.com等。一個IP地址能夠對應多個域名,一個域名只能對應一個IP地址。在網絡中傳輸的數據,所有是以IP地址做爲地址標識,因此在實際傳輸數據之前須要將域名轉換爲IP地址,實現這種功能的服務器稱之爲DNS服務器,也就是通俗的說法叫作域名解析。IP地址的使用要比域名通用一些。
- 端口有了端口的概念之後,在同一個計算機中每一個程序對應惟一的端口,這樣一個計算機上就能夠經過端口區分發送給每一個端口的數據了,換句話說,也就是一個計算機上能夠併發運行多個網絡程序,而不會在互相之間產生干擾。有了IP地址和端口的概念之後,在進行網絡通信交換時,就能夠經過IP地址查找到該臺計算機,而後經過端口標識這臺計算機上的一個惟一的程序。這樣就能夠進行網絡數據的交換了。
- 網絡通信模型 網絡通信基於「請求-響應」模型。在網絡通信中,第一次主動發起通信的程序被稱做客戶端(Client)程序,簡稱客戶端,而在第一次通信中等待鏈接的程序被稱做服務器端(Server)程序,簡稱服務器。一旦通信創建,則客戶端和服務器端徹底同樣,沒有本質的區別。
- 客戶端和服務器端 網絡編程中的兩種程序就分別是客戶端和服務器端。這種網絡編程的結構被稱做客戶端/服務器結構,也叫作Client/Server結構,簡稱C/S結構;使用瀏覽器做爲客戶端的結構被稱做瀏覽器/服務器結構,也叫作Browser/Server結構,簡稱爲B/S結構。總之C/S結構和B/S結構是如今網絡編程中常見的兩種結構,B/S結構其實也就是一種特殊的C/S結構。P2P程序中既包含客戶端程序,也包含服務器端程序。
- 協議格式 編寫協議格式呢?答案是隨意。只要按照這種協議格式可以生成惟一的編碼,按照該編碼能夠惟一的解析出發送數據的內容便可。在實際的網絡程序編程中,最麻煩的內容不是數據的發送和接收,由於這個功能在幾乎全部的程序語言中都提供了封裝好的API進行調用。
- 網絡通信的方式 網絡通信的方式主要有兩種: 在網絡通信中,TCP方式就相似於撥打電話,使用該種方式進行網絡通信時,須要創建專門的虛擬鏈接,而後進行可靠的數據傳輸,若是數據發送失敗,則客戶端會自動重發該數據。而UDP方式就相似於發送短信,使用這種方式進行網絡通信時,不須要創建專門的虛擬鏈接,傳輸也不是很可靠,若是發送失敗則客戶端沒法得到。因爲TCP須要創建專用的虛擬鏈接以及確認傳輸是否正確,因此使用TCP方式的速度稍微慢一些,並且傳輸時產生的數據量要比UDP稍微大一些。論使用TCP方式仍是UDP方式進行網絡通信,網絡編程都是由客戶端和服務器端組成。
- 客戶端的編程 客戶端的編程主要由三個步驟實現:一、 創建網絡鏈接二、 交換數據三、 關閉網絡鏈接
- 服務器端的編程 服務器端的編程步驟和客戶端不一樣,是由四個步驟實現,依次是:一、 監聽端口二、 得到鏈接三、 交換數據四、 關閉鏈接
- java.net 和網絡編程有關的基本API位於java.net包中,該包中包含了基本的網絡編程實現,該包是網絡編程的基礎。該包中既包含基礎的網絡編程類,也包含封裝後的專門處理WEB相關的處理類
- TCP方式 一個基礎的網絡類——InetAddress類。該類的功能是表明一個IP地址,而且將IP地址和域名相關的操做方法包含在該類的內部。在Java語言中,對於TCP方式的網絡編程提供了良好的支持,在實際實現時,以java.net.Socket類表明客戶端鏈接,以java.net.ServerSocket類表明服務器端鏈接。
- 網絡編程 在客戶端網絡編程中,首先須要創建鏈接,在Java API中以java.net.Socket類的對象表明網絡鏈接,因此創建客戶端網絡鏈接,也就是建立Socket類型的對象,該對象表明網絡鏈接,若是創建鏈接時,本機網絡不通,或服務器端程序未開啓,則會拋出異常。在Java語言中,數據傳輸功能由Java IO實現,也就是說只須要從鏈接中得到輸入流和輸出流便可,而後將須要發送的數據寫入鏈接對象的輸出流中,在發送完成之後從輸入流中讀取數據便可。先向輸出流中寫入數據,這些數據會被系統發送出去,而後在從輸入流中讀取服務器端的反饋信息。
- 屢次數據交換那 麼如何實現創建一次鏈接,進行屢次數據交換呢?其實很簡單,創建鏈接之後,將數據交換的邏輯寫到一個循環中就能夠了。這樣只要循環不結束則鏈接就不會被關閉。按照客戶端實現的邏輯,也能夠複用服務器端的鏈接,實現的原理也是將服務器端的數據交換邏輯寫在循環中便可,
- UDP方式UDP方式的網絡編程也在Java語言中得到了良好的支持,因爲其在傳輸數據的過程當中不須要創建專用的鏈接等特色,因此在Java API中設計的實現結構和TCP方式不太同樣。固然,須要使用的類仍是包含在java.net包中。
學習進度條
目標 |
3500行 |
28篇 |
300小時 |
|
第一週 |
150/150 |
1/1 |
20/20 |
|
第二週 |
100/250 |
1/2 |
22/42 |
|
第三週 |
150/400 |
2/4 |
21/63 |
|
第四周 |
1000/1400 |
1/5 |
27/90 |
|
第五週 |
300/1700 |
1/6 |
22/102 |
|
第六週 |
250/1950 |
2/8 |
22/124 |
|
第七週 |
150/2100 |
2/10 |
20/144 |
|
第八週 |
190/2290 |
2/12 |
18/152 |
|
第九周 |
80/2370 |
2/14 |
22/174 |
|
第十週 |
30/2670 |
2/16 |
20/194 |
|
參考資料
歡迎關注本站公眾號,獲取更多信息