201521123072《java程序設計》第十三週學習總結

201521123072《java程序設計》第十三週學習總結

1. 本週學習總結

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

2. 書面做業

1. 網絡基礎

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



往返行程的估計時間不一樣,由於www.baidu.com距離本機較遠小程序

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網絡

屏幕上什麼都沒有

使用GET /index HTTP/1.0命令:
多線程

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


瀏覽器使用了80端口,
QQ使用了8080端口和80端口進行交互,

使用了TCP協議tcp

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

IP+端口,協議,輸入輸出流
• 參考:實驗任務書-題目1

2. TCP客戶端程序編寫

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

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


使用telnet bbs.newsmth.net 23:

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

由於沒有聲明以哪一種協議來進行通訊,應該使用GET /index HTTP/1.0命令

3. ServerSocket與TCP服務器

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

關鍵代碼:

用戶鏈接:

功能檢測:
輸入menu:

輸入1,查詢本地時間:

輸入2,查詢本地IP

輸入3,搜索文件

輸入4以及quit,服務器退出

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

參考:實驗任務書-題目3
參考:EchoServer.java,ThreadedEchoServer.java (多線程服務器)

4. UDP服務器

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

關鍵代碼:

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

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

編寫網絡選擇的流:Scoket套接字,其輸入輸出是字節流,以後用字符流來包裝,
在網絡編程的過程當中,創建網絡鏈接,對從Socket對象中得到的流進行操做,便可進行網絡通訊
例如:對於網絡編程,首先創建網絡鏈接,再進行數據交換,最後就是關閉網絡鏈接,例如在簡單的文字聊天過程當中,是從Socket對象中得到的流進行操做從而完成通訊。

6. 代碼閱讀

閱讀ServerAndThread目錄中的源代碼
6.1 修改程序,在GUI界面中某個地方顯示本身的學號,而後運行該程序(截圖、出現學號)。簡述這個程序的主要功能。


該程序主要功能是:客戶端與服務端的通訊

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

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

服務端這邊,每次操做,沒有另起一行
客戶端這邊,沒有區分客戶端和服務端的對話

3. 碼雲

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

4.課外閱讀

4.1 Java Tutorial:Custom Networking

Trail: Custom Networking
主要看Overview of Networking,Working With URLs,All About Sockets,All About Datagrams

4.2 HTTP協議簡介

4.3一個簡單的小爬蟲

Java編程技巧:小爬蟲程序.docx

4.4 進階:HTTPComponent的使用

使用java中的Socket、URL、URLConnection,而後遵循HTTP協議也能夠編寫一個小程序,和能夠查詢成績的HTTP服務器進行交流。然而直接使用Socket編程較麻煩,這時候咱們可使用HTTPComponent。
HTTPComponent相比傳統JDK自帶的URLConnection,增長了易用性和靈活性

1. 閱讀HttpClient 教程,使用HTTPComponent編寫一些與HTTP服務器交換的示例程序

2. 選作:使用HTTPComponent開發一個查詢成績的程序:用戶輸入用戶名、密碼、驗證碼,便可自動查詢教務處服務器,獲取成績。

參考資料:用Java的HttpClient寫一個簡單的http請求和返回,HttpClient使用詳解,HttpClient 教程, HTTP Client官網

相關文章
相關標籤/搜索