以你喜歡的方式(思惟導圖、OneNote或其餘)概括總結多網絡相關內容。
php
爲了讓你的系統能夠被多個用戶經過網絡同時使用,須要爲你的系統增長網絡功能。
2.1 簡述你想爲你的系統增長什麼網絡功能?設計思路是什麼?
答:爲了能讓購物車系統同時被多個客戶端訪問,使用多線程和TCP技術,建立一個Net類,在類中建立ServerSocket對象的套接字,再建立一個ThreadServer類來實現多線程。html
2.2 系統經過網絡傳遞了什麼信息?信息的格式是什麼?
答:系統經過網絡將用戶端或服務端使用IO流傳遞給對方,信息使用InputStream和OutputStream儲存,再用Scanner和PrintWriter包裝傳輸。java
2.3 你的網絡模塊使用了TCP仍是UDP技術?模塊中的經常使用類是什麼?
答:TCP技術,經常使用類爲SreverSocket類和Socket類,Runable類,Thread類。正則表達式
2.4 截圖網絡通信部分的源代碼與運行截圖,並進行簡單說明。
注意:若是不會編寫客戶端,可使用telnet或者**網絡調試助手*作客戶端。
Net類:
apache
main函數:
編程
Thread類:
小程序
2.5 選作:使用本身編寫的客戶端訪問系統。簡述裏面的核心代碼。
2.6 選作:系統中有出現多線程的衝突或者同步問題嗎?瀏覽器
須要將每週的代碼統計狀況融合到一張表中。
|周次|總代碼量|新增代碼量|總文件數|新增文件數|
|--------|------|-------|------|-------|
|1|44|44|2|2|
|2|213|213|10|5|
|3|417|204|10|5|
|5|676|259|17|7|
|6|1071|405|24|7|
|7|1780|709|30|6|
|8|1900|120|35|5|
|9|2335|435|41|6|
|10|2767|432|48|7|
|11|3321|595|57|9|
|12|3601|280|63|6|
|13|4131|531|67|4|
|14|4537|4006|73|6|服務器
1.1 比較ping www.baidu.com
與ping cec.jmu.edu.cn
,分析返回結果有何不一樣?爲何會有這樣的不一樣?
答:往返行程的估計時間不一樣,由於www.baidu.com距離本機較遠而cec.jmu.edu.com距離本機比較近。
網絡
1.2telnet bbs.newsmth.net
,上面這條命令鏈接的是遠程主機的什麼端口號?
答:Telnet的默認端口是23
1.3telnet 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分佈地在那裏?使用了什麼協議進行通訊?
答:網易雲音樂使用的是6003端口,QQ瀏覽器使用的是8080端口,WPS使用的是56625和56624端口
QQ使用的是8080端口和80端口,使用TCP和UDP協議進行交互。
1.5 編寫網絡程序必不可少的幾個信息是什麼?
IP+端口, 網絡協議,輸入輸出流
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進一步觀察返回結果。沒有任何返回結果,爲何?怎麼修改代碼才能正常顯示?選作:爲何會返回亂碼?如何解決?
答:由於沒有聲明以哪一種協議來進行通訊,應該使用GET /index HTTP/1.0命令。
出現亂碼主要是由於eclipse上的默認字符集是GBK,而網頁上的字符集不是,經過百度知道如何修改字符集,進行修改後就沒有亂碼了。
(修改字符集)
2.4 啓動網絡調試助手,將其設置爲TCP Server,並啓動,以下圖所示(做業中不要出現下圖)
[圖片上傳中...(image-db4025-1513150102054-0)]
嘗試使用Client.java
鏈接該TCP Server,使用該服務器向Client發送信息。(截圖關鍵代碼與運行結果)
答:
2.5 回答:如今的Client.java
只能接收信息,可否改造Client.java
使其能夠與服務器進行交互(服務器能夠發送信息給Client,Client也可發送信息給服務器),寫出大概思路,不要運行截圖。
答:要實現客戶端與服務器的交互,則須要用到多先程的知識,建立兩個線程,分別實現他們的run方法,一個實現客戶向服務器發送數據,一個實現服務器向客戶端發送數據。
2.6 選作:實現2.5。截取關鍵代碼並進行說明。
3.1 簡易單線程MenuServer,題目3.1-3.4。(關鍵代碼及運行截圖,包含學號)可使用網絡調試助手,將其設置爲TCP Client(IP與端口填你的MenuServer的IP與端口),鏈接你的MenuServer。其中的文件搜索功能
爲選作。
答:
3.2 多線程MenuServer(截取關鍵代碼證實你這個是多線程服務器,請使用多個telnet鏈接測試)。
3.3 選作:圖形界面的MenuServer
EchoServer.java
,ThreadedEchoServer.java (多線程服務器)
4.1 改造3.1或3.2,將其改形成基於UDP的MenuServer。(區別題目3的TCP服務器的關鍵代碼,需截大圖、包含學號,不要截圖運行界面)。可使用網絡調試助手模擬UDP客戶端,將其設置爲UDP
,要填本機IP與端口
也要填遠程服務器的IP與端口
。
4.2 對比相應的基於TCP的MenuServer,主要有何不一樣?爲了鏈接多個客戶端,必定要經過多線程技術嗎?若是不使用,怎麼區分不一樣的客戶端呢?
UDPServer.java
5.1 前面編寫的程序用到了大量的流的相關知識。簡述,編寫網絡程序時應當選擇什麼樣的流?Java網絡編程、流之間的關係。任選一場景描述,場景如:簡單的文字聊天、文件傳輸、應用層協議服務器,如QQ、聊天室、網絡遊戲。
閱讀ServerAndThread目錄中的源代碼
6.1 修改程序,在GUI界面中某個地方顯示本身的學號,而後運行該程序(截圖、出現學號)。簡述這個程序的主要功能。
6.2 畫出源代碼的結構圖(各個類的依賴關係)。並簡要說明各個類的功能。
6.3 簡述這個程序有什麼不足之處及改進方法.
使用Socket、URL、正則表達式、流等編寫一個網絡爬蟲能夠將cec.jmu.edu.cn及其所包含連接上的全部網址的圖片都下載下來,抓取深到不超過5。
8.1 寫出設計思路便可。該搜索引擎包含幾部分?裏面核心的實現思路?若是能用框架圖、流程圖畫出架構
8.2 以計算機學院網站爲例,進行測試。好比,輸入ACM
後搜索,能夠將包含ACM的的網頁抽取出來。(可做爲課程設計題目)
Trail: Custom Networking
主要看Overview of Networking,Working With URLs,All About Sockets,All About Datagrams
Java編程技巧:小爬蟲程序.docx
使用java中的Socket、URL、URLConnection,而後遵循HTTP協議也能夠編寫一個小程序,和能夠查詢成績的HTTP服務器進行交流。然而直接使用Socket編程較麻煩,這時候咱們可使用HTTPComponent。
HTTPComponent相比傳統JDK自帶的URLConnection,增長了易用性和靈活性