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

參考資料

相關文章
相關標籤/搜索