201621123033 《Java程序設計》第13周學習總結

1. 本週學習總結

以你喜歡的方式(思惟導圖、OneNote或其餘)概括總結多網絡相關內容。
java

2. 爲你的系統增長網絡功能(購物車、圖書館管理、鬥地主等)-分組完成

爲了讓你的系統能夠被多個用戶經過網絡同時使用,須要爲你的系統增長網絡功能。小程序

2.1 簡述你想爲你的系統增長什麼網絡功能?設計思路是什麼?

可以經過客戶端遠程操做該系統。採用了TCP協議及多線程。先建立一個Server類,並在該類中建立一個ServerSocket對象。再建立一個ThreadSocket類實現多線程。瀏覽器

2.2 系統經過網絡傳遞了什麼信息?信息的格式是什麼?

系統經過網絡傳遞了IO流,信息使用getInputStream()``getOutputStream()獲取字節流,而後經過Scanner``PrintWriter包裝傳輸。服務器

2.3 你的網絡模塊使用了TCP仍是UDP技術?模塊中的經常使用類是什麼?

使用了TCP技術。
模塊中的經常使用類是ServerSocket類及Socket類、Runnable類及Thread類。網絡

2.4 截圖網絡通信部分的源代碼與運行截圖,並進行簡單說明。

注意:若是不會編寫客戶端,可使用telnet或者**網絡調試助手*作客戶端。
先建立了一個Server類,定義其端口8080,在主函數中開啓服務端進行接收,而後放到線程中進行處理。





多線程

2.5 選作:使用本身編寫的客戶端訪問系統。簡述裏面的核心代碼。

2.6 選作:系統中有出現多線程的衝突或者同步問題嗎?

3. 碼雲與PTA

3.1 統計本週完成的代碼量

須要將每週的代碼統計狀況融合到一張表中。socket

周次 總代碼量 新增代碼量 總文件數 新增文件數
3 547 547 12 12
5 971 424 20 8
6 1577 606 29 9
7 2187 1216 41 21
8 2793 606 49 8
9 3040 247 56 7
10 3617 577 63 7
11 3911 294 71 8
12 4409 498 82 11
15 5089 680 92 10

選作:4. 網絡學習指導(如下做業內容均爲選作)

1. 網絡基礎

1.1 比較ping www.baidu.comping cec.jmu.edu.cn,分析返回結果有何不一樣?爲何會有這樣的不一樣?

  • IP地址不同。一個IP地址對應了一個服務器地址,網址不一樣,服務器不一樣,IP就不一樣。
  • 所用時間不一樣。服務器地址與本機地址的物理距離不一樣。
  • ping cec.jmu.edu.cn易出現丟包現象。ping百度不會出現這種狀況,而ping jmu屢試屢丟包,怕是學校設備老化????

1.2 telnet bbs.newsmth.net,上面這條命令鏈接的是遠程主機的什麼端口號?

telnet服務使用的默認端口爲23tcp

1.3 telnet cec.jmu.edu.cn 80,嘗試回答:你從屏幕看到一些什麼內容?返回的內容是否是cec.jmu.edu.cn的主頁內容?嘗試使用GET /index HTTP/1.0命令,會返回什麼?詳見實驗任務書題目1。


看到一片黑↑函數


返回了cec.jmu.edu.cn主頁的源代碼學習

1.4 啓動ConnectionWatcher, 而後啓動若干個能夠聯網的程序(如QQ, telnet,瀏覽器等),查看本機上有什麼程序聯網,使用了什麼端口?QQ佔用了什麼端口和那些遠程IP進行交互,這些IP分佈地在那裏?使用了什麼協議進行通訊?

  • QQ使用了80端口,這些IP來自廣東中山、福建泉州、上海,使用了TCP、UDP協議進行通訊。
  • 網易雲使用了6003端口
  • exploer使用了443端口

1.5 編寫網絡程序必不可少的幾個信息是什麼?

  • IP與端口
  • 客戶端與服務器端(Socket、ServertSocket)
  • 網絡協議(TCP、UDP)

參考:實驗任務書-題目1

2. 編寫TCP客戶端程序

2.1 參照SocketTest.java編寫一個簡單的鏈接遠程服務器小程序Client.java,能夠接收並顯示服務器發送的信息。啓動時須要首先在控制檯指定遠程主機IP與端口號。(截圖,出現本身學號)。

2.2 將程序中的網址改爲bbs.newsmth.net,端口號改成23,再次觀察返回結果?嘗試執行telnet bbs.newsmth.net 23,對比返回結果。

2.3 將程序中的網址改爲cec.jmu.edu.cn,端口號改成80進一步觀察返回結果。沒有任何返回結果,爲何?怎麼修改代碼才能正常顯示?選作:爲何會返回亂碼?如何解決?

2.4 啓動網絡調試助手,將其設置爲TCP Server,並啓動,以下圖所示(做業中不要出現下圖)

嘗試使用Client.java鏈接該TCP Server,使用該服務器向Client發送信息。(截圖關鍵代碼與運行結果)

2.5 回答:如今的Client.java只能接收信息,可否改造Client.java使其能夠與服務器進行交互(服務器能夠發送信息給Client,Client也可發送信息給服務器),寫出大概思路,不要運行截圖。

2.6 選作:實現2.5。截取關鍵代碼並進行說明。

參考:實驗任務書-題目2

3. ServerSocket與TCP服務器

3.1 簡易單線程MenuServer,題目3.1-3.4。(關鍵代碼及運行截圖,包含學號)可使用網絡調試助手,將其設置爲TCP Client(IP與端口填你的MenuServer的IP與端口),鏈接你的MenuServer。其中的文件搜索功能爲選作。

3.2 多線程MenuServer(截取關鍵代碼證實你這個是多線程服務器,請使用多個telnet鏈接測試)。

3.3 選作:圖形界面的MenuServer

能夠控制服務器的啓動中止、查看客戶端連接的基本信息(IP、端口、連接時間)
拓展:在服務器端斷開某個客戶端的連接、查看客戶端發送的給服務器端的日誌記錄
參考:實驗任務書-題目3
參考:EchoServer.java,ThreadedEchoServer.java (多線程服務器)

4. UDP服務器

4.1 改造3.1或3.2,將其改形成基於UDP的MenuServer。(區別題目3的TCP服務器的關鍵代碼,需截大圖、包含學號,不要截圖運行界面)。可使用網絡調試助手模擬UDP客戶端,將其設置爲UDP,要填本機IP與端口也要填遠程服務器的IP與端口

4.2 對比相應的基於TCP的MenuServer,主要有何不一樣?爲了鏈接多個客戶端,必定要經過多線程技術嗎?若是不使用,怎麼區分不一樣的客戶端呢?

參考:UDPServer.java

相關文章
相關標籤/搜索