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

1. 本週學習總結

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

1. TCP的特徵:
        ①可靠:具備失敗重傳的功能;
        ②開銷大:須要創建通路以維持通訊;
        ③控制能力較強:有效維持網絡秩序,防止網絡本貴。
    2. UDP的特徵:
        ①開銷小:無創建特定通路維持通信,報字段比TCP小;
        ②不可靠:由於沒有通路,因此傳輸數據是隨機的,不必定能送達。
    3. ①Socket:做爲網頁和運輸層之間的接口,達成網頁數據瀏覽和變動的目的;
       ②ServerSocket:不是Socket!把使用TCP協議的Socket封裝成流;
       ③DatagramSocket:把使用UDP協議的Socket封裝成流。

2. 書面做業

1. 網絡基礎編程

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

    小程序

    數據發送和接受往返的時間不一樣,由於集大教育網相對於百度官網距離咱們會更加近一些。
  • 1.2 telnet bbs.newsmth.net,上面這條命令鏈接的是遠程主機的什麼端口號?
    瀏覽器

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

    輸入telnet cec.jmu.edu.cn 80後是黑屏=-=,在執行GET / HTTP/1.0命令後會返回網頁內容,以下:

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

    如圖標識
  • 1.5 編寫網絡程序必不可少的幾個信息是什麼?多線程

    1. 通訊雙方甚至多方的IP地址;
      2. 通訊所用的協議;
      3. 該程序所充當的身份:服務器或客戶端等。

2. 編寫TCP客戶端程序學習

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

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

    如上圖,程序返回的結果沒有色彩,格式不被支持。
  • 2.3 將程序中的網址改爲cec.jmu.edu.cn,端口號改成80進一步觀察返回結果。沒有任何返回結果,爲何?怎麼操做

    此時沒有任何返回結果,由於該網站須要輸入get命令請求數據纔會返回結果,如圖:

  • 2.4 啓動網絡調試助手,將其設置爲TCP Server,並啓動,嘗試使用Client.java鏈接該TCP Server,使用該服務器向Client發送信息。(截圖)

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

    在Client.java中多寫一個線程,用於發送消息便可進行交互,在接收的同時支持發送消息。

3. 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與端口。

    代碼有點混亂,無從下手。

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

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

    具體須要選擇什麼樣的流須要根據咱們所編寫的程序性質來選擇; 
      ①有的程序容許數據的部分丟失:好比語音聊天室,語音中若是存在重發數據會形成通話時序混亂,影響溝通,可是和延遲之類的並不矛盾;
       有的程序不容許丟失數據:好比文件發送,郵件的發送等。
      ②有的程序對及時性要求就很高:好比一些「團戰」遊戲,若是再選擇傳輸慢開銷大的那八成是「團滅」了=-=

    6. 代碼閱讀

閱讀ServerAndThread目錄中的源代碼

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

    達到客戶端與服務端之間相互通訊的目的。
  • 6.2 畫出源代碼的結構圖(各個類的依賴關係)。並簡要說明各個類的功能。

    ServerChart:設置服務端界面 
      ServerReadThread:服務端讀取線程    
      SeverActionListener:服務端的監聽器
      ClientChart:設置客戶端界面
      ClientReadThread:客戶端讀取線程
      ClientListener:客戶端的監聽器
  • 6.3 簡述這個程序有什麼不足之處及改進方法.

    客戶端和服務端的語言沒有明確區分,換行還會出現失誤。

3. 碼雲

碼雲代碼提交記錄

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

    提交失敗我也很絕望啊。
相關文章
相關標籤/搜索