201521123023《Java程序设计》第13周学习总结
1. 本周學習總結
(1)網絡中為了進行數據交換(通信)而建立的規則、標準或約定(=語義+語法+規則)稱之為協議(常用http/ftp) (2)大致熟悉了TCP協議,但是UDP怎么辣么藍,好理解卻用不起來 T_T (3)好像多線程也不是很難的樣子(對多線程的用法進一步熟悉) (4)這次的作業做的我頭昏腦漲、心力交瘁 [○・`Д′・ ○] (可能是上課沒太認真聽講 ╮(╯﹏╰)╭)2. 書面作業
1. 網絡基礎
1.1 比較ping www.baidu.com與ping cec.jmu.edu.cn,分析返回結果有何不同?為什么會有這樣的不同?
應答的時間不同,ping www.baidu.com的應答時間較長,ping cec.jmu.edu.cn的較短,ping www.baidu.com的TTL(Time To Live)為51,其數據通過的路由器數為"64-51=13",而ping cec.jmu.edu.cn的TTL為61,其數據通過的路由器數為"64-61=3"。如果應答時間短,表示數據報不必通過太多的路由器或網絡連接速度比較快。
1.2 telnet bbs.newsmth.net,上面這條命令連接的是遠程主機的什么端口號?
23號端口(telnet后啟動ConnectionWatcher看到的)1.3 telnet cec.jmu.edu.cn 80,嘗試回答:你從屏幕看到一些什么內容?返回的內容是不是cec.jmu.edu.cn的主頁內容?嘗試使用GET /index HTTP/1.0命令,會返回什么?詳見實驗任務書題目1。
從屏幕上看到cec.jmu.edu.cn主頁內容,不過開始看不懂,想不明白為什么這么兩行代碼能顯示辣么多的內容。當然,省卻“打開回顯、回車、GET/HTTP/1.0”什么也看不到。
使用"GET /index HTTP/1.0"會返回錯誤信息,“不被允許GET”
之后又試了一次,發現結果不一樣,返回的是"404 Not Found"。
為嘛加了個index的GET命令會出現這種情況?后面又試了幾次,“404 Not Found”!!!淚奔~~~
1.4 啟動ConnectionWatcher, 然后啟動若干個可以聯網的程序(如QQ, telnet,瀏覽器等),查看本機上有什么程序聯網,使用了什么端口?QQ占用了什么端口和那些遠程IP進行交互,這些IP分布地在那里?使用了什么協議進行通信?
360瀏覽器(54652、51502、51512端口被使用)、搜狗輸入法(54692端口)、QQ(51409、51410等端口)、360安全衛士(54696端口)等等連接了網絡 QQ使用了如上一些端口,(根據使用的不同功能占用或釋放端口,如開起對話框,也會占用本地端口)交互的IP除了主服務器端(TCP協議,),還有客戶端(UDP協議,)(好友之間的交互)等。
1.5 編寫網絡程序必不可少的幾個信息是什么?
參考:實驗任務書-題目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進一步觀察返回結果。沒有任何返回結果,為什么?怎么操作
因為我們連接的是cec.jmu.edu.cn:80的http服務,需要按照http協議來給服務器發送指令,比如調用
PrintWriter.println("GET / HTTP/1.0");
在2.1中已實現
2.4 啟動網絡調試助手,將其設置為TCP Server,并啟動,如下圖所示嘗試使用Client.java連接該TCP Server,使用該服務器向Client發送信息。(截圖) 2.5 回答:現在的Client.java只能接收信息,能否改造Client.java使其可以與服務器進行交互(服務器可以發送信息給Client,Client也可發送信息給服務器),寫出大概思路即可。 (多線程) 2.6 選做:實現2.5 參考:實驗任務書-題目23. ServerSocket與TCP服務器
3.1 簡易單線程MenuServer,題目3.1-3.4。(關鍵代碼及運行截圖,包含學號)可以使用網絡調試助手,將其設置為TCP Client(IP與端口填你的MenuServer的IP與端口),連接你的MenuServer。其中的文件搜索功能為選做。
3.2 多線程MenuServer(截圖證明你這個是多線程服務器,使用telnet連接)。
4. UDP服務器
4.1 改造3.1或3.2,將其改造成基于UDP的MenuServer。(運行界面代碼截圖,包含學號)。可以使用網絡調試助手,將其設置為UDP,要填本機IP與端口也要填遠程服務器的IP與端口。
這星期補上
參考:UDPServer.java
5. 論述題:網絡程序與流
5.1 前面編寫的程序用到了大量的流的相關知識。簡述,編寫網絡程序時應當選擇什么樣的流?Java網絡編程、流之間的關系。場景如:簡單的文字聊天、文件傳輸、應用層協議服務器,如QQ、聊天室、網絡游戲。
socket的輸入輸出流是字節流,然后用字符流來包裝。
比如簡單的文字聊天:客戶端1-->客戶端2
客戶端1發送消息后,服務器端“代為接收”,等到客戶端2上線時再由服務器send,客戶端2接收。
6. 代碼閱讀
先交了,再補補補
閱讀ServerAndThread目錄中的源代碼
6.1 修改程序,在GUI界面中某個地方顯示自己的學號,然后運行該程序(截圖、出現學號)。簡述這個程序的主要功能。
answer:服務端開啟端口,客戶端建立連接,服務端與客戶端互相通信6.2 畫出源代碼的結構圖(各個類的依賴關系)。并簡要說明各個類的功能。
MainThread:啟動服務端,監聽客戶端并加入線程列表
ServerChart:服務端圖形界面
ClientChart:客戶端圖形界面
ServerReadThread:服務端收發顯示數據
ClientReadThread:客戶端收發顯示數據
ServerActionListener:服務端監聽器
ClientListener:客戶端監聽器
分別負責監聽,ClientChart。
6.3 簡述這個程序有什么不足之處及改進方法.
客戶端消息發送存在問題,開兩個客戶端,當一個客戶端發送消息給服務端時,另一個客戶端會會顯示與本客戶端相同的信息
改進方法:為每個客戶端添加ID屬性,服務端識別響應
3. 碼云
碼云代碼提交記錄
在碼云的項目中,依次選擇“統計-Commits歷史-設置時間段”, 然后搜索并截圖
轉載于:https://www.cnblogs.com/daijz/p/6884640.html
總結
以上是生活随笔為你收集整理的201521123023《Java程序设计》第13周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的Latex中文报告模板
- 下一篇: c语言英美姓名,英美常用人名——C-D