當前位置:
首頁 >
201521123013 《Java程序设计》第13周学习总结
發布時間:2023/11/27
36
豆豆
生活随笔
收集整理的這篇文章主要介紹了
201521123013 《Java程序设计》第13周学习总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 本周學習總結
2. 書面作業
Q1. 網絡基礎
1.1 比較ping www.baidu.com與ping cec.jmu.edu.cn,分析返回結果有何不同?為什么會有這樣的不同?
- ping值不同(time列),cec.jmu.edu.cn的ping值比較小。
- ping值:從本地電腦發一個數據包,傳輸到服務器,然后服務器返回本地電腦的總時間。因為cec.jmu.edu.cn的服務器離本機距離比較近,所以數據請求發送過去,再回來的時間就比較小,也就是ping值比較小。
1.2 telnet bbs.newsmth.net,上面這條命令連接的是遠程主機的什么端口號?
- 23端口
1.3 telnet cec.jmu.edu.cn 80,嘗試回答:你從屏幕看到一些什么內容?返回的內容是不是cec.jmu.edu.cn的主頁內容?嘗試使用GET /index HTTP/1.0命令,會返回什么?詳見實驗任務書題目1。
- 沒有內容;返回的不是cec.jmu.edu.cn主頁內容;使用GET /index HTTP/1.0命令,返回的是cec.jmu.edu.cn的主頁源代碼
1.4 啟動ConnectionWatcher, 然后啟動若干個可以聯網的程序(如QQ, telnet,瀏覽器等),查看本機上有什么程序聯網,使用了什么端口?QQ占用了什么端口和那些遠程IP進行交互,這些IP分布地在那里?使用了什么協議進行通信?
- 酷狗、IE、QQ、360,使用了80端口、49329端口等等。使用了80端口跟遠程IP進行交互,使用了TCP協議。
1.5 編寫網絡程序必不可少的幾個信息是什么?
- 套接字(Socket)、輸入輸出流(incoming.getInputStream(),getOutputStream())、TCP、UDP協議
Q2. 編寫TCP客戶端程序
2.1 參照SocketTest.java編寫一個簡單的連接遠程服務器小程序Client.java,可以接收并顯示服務器發送的信息。啟動時需要首先在控制臺指定遠程主機IP與端口號。(截圖,出現自己學號)
2.2 將程序中的網址改成bbs.newsmth.net,端口號改為23,再次觀察返回結果?嘗試執行telnet bbs.newsmth.net 23,對比返回結果。
- 因為eclipse編碼問題,有些字符無法正常顯示。
2.3 將程序中的網址改成cec.jmu.edu.cn,端口號改為80進一步觀察返回結果。沒有任何返回結果,為什么?怎么操作
- 因為客戶端跟服務器(cec.jmu.edu.cn)是通過http協議進行交互的,所以需要使用GET命令請求消息。如果使用Socket的話,必須自己發送http請求,
out.println("GET / HTTP/1.0\n")也可以使用URL類,因為URL類可以直接跟Web服務器進行交互(里面封裝了使用http協議通信的代碼),使用比較方便。
2.4 啟動網絡調試助手,將其設置為TCP Server,并啟動,嘗試使用Client.java連接該TCP Server,使用該服務器向Client發送信息。(截圖)
2.5 回答:現在的Client.java只能接收信息,能否改造Client.java使其可以與服務器進行交互(服務器可以發送信息給Client,Client也可發送信息給服務器),寫出大概思路即可。
Q3. ServerSocket與TCP服務器
3.1 簡易單線程MenuServer,題目3.1-3.4。(關鍵代碼及運行截圖,包含學號)可以使用網絡調試助手,將其設置為TCP Client(IP與端口填你的MenuServer的IP與端口),連接你的MenuServer。其中的文件搜索功能為選做。
3.2 多線程MenuServer(截圖證明你這個是多線程服務器,使用telnet連接)。
3.3 選做:圖形界面的MenuServer
Q4. UDP服務器
4.1 改造3.1或3.2,將其改造成基于UDP的MenuServer。(運行界面代碼截圖,包含學號)。可以使用網絡調試助手,將其設置為UDP,要填本機IP與端口也要填遠程服務器的IP與端口。
?參考:UDPServer.java
Q5. 論述題:網絡程序與流
5.1 前面編寫的程序用到了大量的流的相關知識。簡述,編寫網絡程序時應當選擇什么樣的流?Java網絡編程、流之間的關系。場景如:簡單的文字聊天、文件傳輸、應用層協議服務器,如QQ、聊天室、網絡游戲。
- 編寫網絡程序時選擇輸入輸出流的字節流,然后用字符流包裝。客戶端和服務器進行通信,實際上就是對Socket對象中獲得的流進行操作。對程序來講,輸出到屏幕,打印機,文件等都叫輸出,而從文件讀取,從網絡讀取,接收到都算輸入。
Q6. 代碼閱讀
閱讀ServerAndThread目錄中的源代碼
6.1 修改程序,在GUI界面中某個地方顯示自己的學號,然后運行該程序(截圖、出現學號)。簡述這個程序的主要功能。
- 功能:一臺服務與多臺客戶端之間的通信。
6.2 畫出源代碼的結構圖(各個類的依賴關系)。并簡要說明各個類的功能。
- ClientChart:客戶端界面,ClientReadThread:讀取客戶端消息,ClientListener:監聽器,監聽客戶端收到的消息。
- 服務端與客戶端類似。
6.3 簡述這個程序有什么不足之處及改進方法.
- 不足:客戶端發消息時,服務端知道是哪個線程發的消息,但是客戶端之間顯示只顯示“客戶端說:”,不能區分各客戶端。
選做:7. 網絡爬蟲
使用Socket、URL、正則表達式、流等編寫一個網絡爬蟲可以將cec.jmu.edu.cn及其所包含鏈接上的所有網址的圖片都下載下來,抓取深到不超過5。
選做:8. 簡易搜索引擎(進階)
8.1 寫出設計思路即可。該搜索引擎包含幾部分?里面核心的實現思路?如果能用框架圖、流程圖畫出架構
8.2 以計算機學院網站為例,進行測試。比如,輸入ACM后搜索,可以將包含ACM的的網頁抽取出來。(可作為課程設計題目)
3. 碼云
碼云代碼提交記錄
轉載于:https://www.cnblogs.com/xygeqian/p/6875736.html
總結
以上是生活随笔為你收集整理的201521123013 《Java程序设计》第13周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xo多少钱一瓶啊?
- 下一篇: Java transient