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

1. 本週學習總結

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



2. 書面做業

Q1. 網絡基礎 參考:實驗任務書-題目1web

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

A :
ping www.baidu.com

ping cec.jmu.edu.cn
小程序

  • 首先是www.a.shifen.comjmuweb2.jmu.edu.cn的區別。由於ping的是不一樣的網站,因此確定顯示的是不一樣的。然而爲何不是www.baidu.comcec.jmu.edu.cn呢?(悄悄去百度了一下)大概就是一種防止被黑客用不少肉雞同時攻擊堵住網站的出站口的一種手段,至關與爲了維護網站安全的一種假裝。
  • 其次就是112.80.248.74210.34.128.152的不一樣。這兩串數字是兩個網站的域名。不一樣網站擁有不一樣的域名這是毋庸置疑的。可是一個比較有意思的地方:我一樣的再去ping百度,反饋回來的ip是不同的。(而後我又去百度了一下)原來相似百度這樣的大型網站是有不少的服務器的,因此每ping一次反饋的ip都不一樣。
  • 而後是TTL值的不一樣。TTL是一個ip協議的值,它告訴網絡,數據包在網絡中的時間是否太長而應被丟棄。(這是百度看到的,具體的沒有深究。)
  • 最後就是一些傳送時間的不一樣。猜測應該是與本身的網速、距離以及正在使用網站的人數有關。

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

A :23號端口號。由於使用的是Telnet命令。安全

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

A :首先輸入telnet cec.jmu.edu.cn 80。啥也沒看到,一片黑。返回的不是其主頁內容。使用GET /index HTTP/1.0命令後,返回主頁內容。網絡

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

A :工具

  • 本機有QQ、瀏覽器、360安全衛士、電腦管家等程序聯網,分別使用的端口如上圖所示。
  • 看其中第二條。QQ佔用本地49432端口,與遠程163.177.92.121TP進行交互,IP分佈地去網上查了兩條,以下圖所示。使用TCP協議進行通訊。

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

A :協議、端口、IP、域名、命令。




Q2. 編寫TCP客戶端程序

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

A :

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

A :

2.3 將程序中的網址改爲cec.jmu.edu.cn,端口號改成80進一步觀察返回結果。沒有任何返回結果,爲何?怎麼操做

A :咱們鏈接cec.jmu.edu.cn的80端口,實際上使用了應用層HTTP協議。沒有任何返回結果是由於沒有使用HTTP協議得到數據。操做就是建立一條輸出流,用pw.println("GET / HTTP/1.0")pw.println()語句模擬HTTP請求,再刷新緩衝區便可。

2.4 啓動網絡調試助手,將其設置爲TCP Server,並啓動,以下圖所示

嘗試使用Client.java鏈接該TCP Server,使用該服務器向Client發送信息。(截圖)

A :

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

A :先建立Socect對象的輸出流,建立一個PrintWriter對象,調用其println方法向輸出流中寫,此時是寫進了緩衝區裏,再調用flsh方法刷新便可發信息給Client。




Q3. ServerSocket與TCP服務器

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

A :

3.2 多線程MenuServer(截圖證實你這個是多線程服務器,使用telnet鏈接)。

A :證實是多線程,以下圖。

用telnet連接,以下圖。




Q4. UDP服務器

4.1 改造3.1或3.2,將其改形成基於UDP的MenuServer。(運行界面代碼截圖,包含學號)。可使用網絡調試助手,將其設置爲UDP,要填本機IP與端口也要填遠程服務器的IP與端口。參考:UDPServer.java

A :
嘗試參考代碼改了一下,如上。可是具體的都不懂,抱歉真的不會作 T T




Q5. 論述題:網絡程序與流

5.1 前面編寫的程序用到了大量的流的相關知識。簡述,編寫網絡程序時應當選擇什麼樣的流?Java網絡編程、流之間的關係。場景如:簡單的文字聊天、文件傳輸、應用層協議服務器,如QQ、聊天室、網絡遊戲。

A :編寫網絡程序時應該選擇InputStreamOutputStream這兩個流。java網絡編程建立Socket對象後,對其中的流進行操做,完成相應的輸入輸出要求。




Q6. 代碼閱讀
閱讀ServerAndThread目錄中的源代碼

6.1 運行該程序(截圖)。簡述這個程序的主要功能。

A :
是一個簡易版的聊天工具吧。服務端客戶端可交互信息,進行通信。

6.2 畫出源代碼的結構圖(各個類的依賴關係)。並簡要說明各個類的功能。

A :

6.3 簡述這個程序有什麼不足之處及改進方法.

A :不足:如截圖所示,某一個客戶端發送消息後,其餘客戶端並不能知道具體是哪個人發送的消息。
改進方法:某一個客戶端發送信息時,輸出具體客戶端ID給其餘客戶端。



3. 碼雲

碼雲代碼提交記錄
在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖



4.課外閱讀

4.2 HTTP協議簡介

A :HTML是一種用來定義網頁的文本,HTTP是在網絡上傳輸HTML的協議,用於瀏覽器和服務器的通訊。因此例如用URL去瀏覽網頁,傳過來的是網站的HTML代碼。

4.3一個簡單的小爬蟲 Java編程技巧:小爬蟲程序.docx

A :啊哈哈,這個感受還挺有意思的。 步驟:1.把全部想要的商品的連接讀到程序中。   2. 分別打開每個連接讀取源代碼   3. 驗證是不是金子商品(源代碼中含有free_msg字符串)   4. 若是是金子就把該連接用IE打開   省去了要一個一個本身手動去點去瀏覽的過程,代碼直接把免費的東西彈出來,天然比別人慢慢加載來的快不少。

相關文章
相關標籤/搜索