20155317 2016-2017-2 《Java程序设计》第十学习总结
20155317 2016-2017-2 《Java程序設計》第十學習總結
教材學習內容總結
1.網絡編程的概念:
網絡編程就是在兩個或兩個以上的設備(例如計算機)之間傳輸數據。程序員所作的事情就是把數據發送到指定的位置,或者接收到指定的數據,這個就是狹義的網絡編程范疇。在發送和接收數據時,大部分的程序設計語言都設計了專門的API實現這些功能,程序員只需要調用即可。網絡編程的實質就是兩個(或多個)設備(例如計算機)之間的數據傳輸。按照計算機網絡的定義,通過一定的物理設備將處于不同位置的計算機連接起來組成的網絡,這個網絡中包含的設備有:計算機、路由器、交換機等等。網絡最主要的優勢在于共享:共享設備和數據,現在共享設備最常見的是打印機,一個公司一般一個打印機即可,共享數據就是將大量的數據存儲在一組機器中,其它的計算機通過網絡訪問這些數據,例如網站、銀行服務器等等。
2.網絡通訊方式:
在現有的網絡中,網絡通訊的方式主要有兩種:
1、 TCP(傳輸控制協議)方式
2、 UDP(用戶數據報協議)方式
在網絡通訊中,TCP方式就類似于撥打電話,使用該種方式進行網絡通訊時,需要建立專門的虛擬連接,然后進行可靠的數據傳輸,如果數據發送失敗,則客戶端會自動重發該數據。而UDP方式就類似于發送短信,使用這種方式進行網絡通訊時,不需要建立專門的虛擬連接,傳輸也不是很可靠,如果發送失敗則客戶端無法獲得。這兩種傳輸方式都是實際的網絡編程中進行使用,重要的數據一般使用TCP方式進行數據傳輸,而大量的非核心數據則都通過UDP方式進行傳遞,在一些程序中甚至結合使用這兩種方式進行數據的傳遞。由于TCP需要建立專用的虛擬連接以及確認傳輸是否正確,所以使用TCP方式的速度稍微慢一些,而且傳輸時產生的數據量要比UDP稍微大一些。
3.客戶端網絡編程技術:
客戶端(Client)是指網絡編程中首先發起連接的程序,客戶端一般實現程序界面和基本邏輯實現,在進行實際的客戶端編程時,無論客戶端復雜還是簡單,以及客戶端實現的方式,客戶端的編程主要由三個步驟實現:
1、 建立網絡連接
客戶端網絡編程的第一步都是建立網絡連接。在建立網絡連接時需要指定連接到的服務器的IP地址和端口號,建立完成以后,會形成一條虛擬的連接,后續的操作就可以通過該連接實現數據交換了。
2、 交換數據
連接建立以后,就可以通過這個連接交換數據了。交換數據嚴格按照請求響應模型進行,由客戶端發送一個請求數據到服務器,服務器反饋一個響應數據給客戶端,如果客戶端不發送請求則服務器端就不響應。
根據邏輯需要,可以多次交換數據,但是還是必須遵循請求響應模型。
3、 關閉網絡連接
在數據交換完成以后,關閉網絡連接,釋放程序占用的端口、內存等系統資源,結束網絡編程。
4.服務器網絡編程技術:
服務器端(Server)是指在網絡編程中被動等待連接的程序,服務器端一般實現程序的核心邏輯以及數據存儲等核心功能。服務器端的編程步驟和客戶端不同,是由四個步驟實現,依次是:
1、 監聽端口
服務器端屬于被動等待連接,所以服務器端啟動以后,不需要發起連接,而只需要監聽本地計算機的某個固定端口即可。
這個端口就是服務器端開放給客戶端的端口,服務器端程序運行的本地計算機的IP地址就是服務器端程序的IP地址。
2、 獲得連接
當客戶端連接到服務器端時,服務器端就可以獲得一個連接,這個連接包含客戶端的信息,例如客戶端IP地址等等,服務器端和客戶端也通過該連接進行數據交換。
一般在服務器端編程中,當獲得連接時,需要開啟專門的線程處理該連接,每個連接都由獨立的線程實現。
3、 交換數據
服務器端通過獲得的連接進行數據交換。服務器端的數據交換步驟是首先接收客戶端發送過來的數據,然后進行邏輯處理,再把處理以后的結果數據發送給客戶端。簡單來說,就是先接收再發送,這個和客戶端的數據交換數序不同。
其實,服務器端獲得的連接和客戶端連接是一樣的,只是數據交換的步驟不同。
當然,服務器端的數據交換也是可以多次進行的。
在數據交換完成以后,關閉和客戶端的連接。
4、 關閉連接
當服務器程序關閉時,需要關閉服務器端,通過關閉服務器端使得服務器監聽的端口以及占用的內存可以釋放出來,實現了連接的關閉。
教材學習中的問題和解決過程
- 問題1:?TCP協議和UDP協議的區別?
- 解決方案:這個問題不涉及Java的知識,是純粹的計算機網絡的問題。TCP協議是傳輸控制協議,UDP協議是用戶數據報協議,兩者都是傳輸層的協議,主要區別在于前者是可靠的,面向連接的協議,后者是不可靠的,無連接的協議。其它的區別還有,TCP協議傳輸速度慢,UDP常用于一次性傳輸比較少量數據的網絡應用。
- 問題2:Java Socket運行常出現異常
- 解決方案:上網查詢后,參考了Java Socket常見異常處理和 網絡編程需要注意的問題這篇博客中提到的問題,總結如下:
- 這些異常我還不能全部處理,但博客中的總結非常好
代碼調試中的問題和解決過程
本周代碼暫未遇到什么問題~
代碼托管
代碼行數統計
?
上周考試錯題總結
上周測試了實驗方面的內容,還不知道錯題是哪些……提醒我今后必須更加注意實驗方面的內容。
結對及互評
點評過的同學博客和代碼
- 本周結對學習情況
-
- 20155301
-
結對照片
- 結對學習內容
- 學習partner的代碼并作出點評
- 學習partner的博客和自己的博客做對比,找出不足
-
- 上周博客互評情況
上周博客互評情況- 20155312
- 20155232
- 20155205
- 20155207
其他(感悟、思考等,可選)
Java學習接近尾聲,這周又換了一個新的教材,開始為Java的Android平臺學習做準備,這和自己的大創項目有非常大的關系,自己也會更用心去了解這方面的知識。
學習進度條
| 目標 | 5000行 | 30篇 | 400小時 | ? |
| 第一周 | 50/100 | 1/1 | 24/24 | ? |
| 第二周 | 250/300 | 1/2 | 30/54 | ? |
| 第三周 | 552/852 | 1/3 | 16/60 | ? |
| 第四周 | 717/1569 | 1/4 | 10/70 | ? |
| 第五周 | 495/2064 | 1/5 | 6/76 | ? |
| 第六周 | 754/2818 | 1/6 | 6/82 | ? |
| 第七周 | 679/3493 | 2/8 | 5/87 | ? |
| 第八周 | 352/3845 | 1/9 | 8/95 | ? |
| 第九周 | 1203/5048 | 2/11 | 5/100 | ? |
| 第十周 | 315/6252 | 1/12 | 5/105 | ? |
-
計劃學習時間:6小時
-
實際學習時間:5小時
參考資料
- Java和Android開發學習指南
轉載于:https://www.cnblogs.com/wxwddp/p/6789481.html
總結
以上是生活随笔為你收集整理的20155317 2016-2017-2 《Java程序设计》第十学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设置Dialog全屏显示(转)
- 下一篇: Java enum枚举类型