以你喜歡的方式(思惟導圖、OneNote或其餘)概括總結多網絡相關內容。
java
爲了讓你的系統能夠被多個用戶經過網絡同時使用,須要爲你的系統增長網絡功能。編程
答:主要是添加了一個NetServer
類,讓代碼可以被客戶端使用遠程鏈接來進行一系列操做。爲了讓系統可以同時被多個客戶端訪問,選擇了使用TCP技術以及多線程技術。在NetServer
類中建立了ServerSocket
對象的套接字,而後又建立一個ThreadServer
類來實現多線程技術,該類實現了Runnable
接口,在run方法裏寫出了用戶可進行的相應的操做。而後在主函數中建立線程,不斷接收新的客戶端,由此可實現多個用戶對系統的同時操做。小程序
答:系統經過網絡將用戶端或是服務端所進行的操做使用IO流傳遞給對方,信息使用字節流InputStream
以及OutputStream
存儲,而後再經過字符流Scanner
以及PrintWriter
進行包裝傳輸。瀏覽器
答:使用了TCP技術,模塊中最經常使用的類爲TCP網絡通訊方面的ServerSocket
類以及Socket
類,還有多線程方面的Runnable
類和Thread
類服務器
答:主要就是建立了一個NetServer類,並定義其端口爲9700,而後在主函數中開啓服務端進行客戶端的接收,將接收到的客戶端放到一個線程中分別進行處理。在ThreadServer
類中實現run方法來設定用戶所能進行的操做。
網絡
建立套接字鏈接上圖書館系統的IP和端口號,而後設置兩個線程,分別實現客戶端與服務端之間的交流。
多線程
須要將每週的代碼統計狀況融合到一張表中。
框架
周次 | 總代碼量 | 新增代碼量 | 總文件數 | 新增文件數 |
---|---|---|---|---|
2 | 607 | 607 | 15 | 15 |
3 | 1642 | 1035 | 33 | 18 |
5 | 2044 | 402 | 42 | 9 |
6 | 2874 | 830 | 57 | 15 |
7 | 3161 | 287 | 63 | 6 |
8 | 4299 | 1138 | 72 | 9 |
9 | 4831 | 532 | 81 | 9 |
10 | 5475 | 644 | 93 | 12 |
11 | 5958 | 483 | 102 | 9 |
12 | 6819 | 861 | 116 | 14 |
13 | 7408 | 589 | 127 | 11 |
14 | 8348 | 940 | 141 | 14 |
ping www.baidu.com
與ping cec.jmu.edu.cn
,分析返回結果有何不一樣?爲何會有這樣的不一樣?
117.185.17.151
來自上海市,而112.5.163.149
來自福建省廈門市。telnet bbs.newsmth.net
,上面這條命令鏈接的是遠程主機的什麼端口號?答:遠程登陸服務使用的默認端口爲23,這個通常常識,固然,也能夠用netstat
命令進行查詢。eclipse
telnet cec.jmu.edu.cn 80
,嘗試回答:你從屏幕看到一些什麼內容?返回的內容是否是cec.jmu.edu.cn
的主頁內容?嘗試使用GET /index HTTP/1.0
命令,會返回什麼?詳見實驗任務書題目1。答:看到……一片黑暗,什麼內容都沒有。當使用了GET /index HTTP/1.0
命令,會返回學校主頁的源碼。這是由於學校的網頁服從的是HTTP協議,所以要使用GET /index HTTP/1.0
發送請求來得到網頁內容。socket
答:其實沒怎麼改源代碼,只是加了一個控制檯輸入,而後查詢了百度的IP地址進行接收該頁面的信息。
telnet bbs.newsmth.net 23
,對比返回結果。
答:能夠看出,除了一些編碼上問題致使一些字符沒法正常顯示,二者返回的結果幾乎同樣。
答:沒有返回結果是由於沒有使用GET / HTTP/1.0\n
命令發送一個請求,所以不會有返回結果,加上以下代碼便可。
會出現亂碼主要是由於eclipse上的默認字符集是GBK,而網頁上的字符集不是,我先查看了網頁的源代碼,由下圖能夠看出,網站的字符集爲UTF-8,而後只要把eclipse上的字符集修改成UTF-8便可。最後再運行時便可正常顯示
嘗試使用Client.java
鏈接該TCP Server,使用該服務器向Client發送信息。(截圖關鍵代碼與運行結果)
Client.java
只能接收信息,可否改造Client.java
使其能夠與服務器進行交互(服務器能夠發送信息給Client,Client也可發送信息給服務器),寫出大概思路,不要運行截圖。答:通常要實現客戶端與服務器的交互,要用到線程的知識,能夠在代碼中建立兩個線程,分別實現他們的run方法,一個線程用於客戶機向服務端發送數據,另外一個線程用於服務器像客戶機發送數據。
UDP
,要填本機IP與端口
也要填遠程服務器的IP與端口
。
答:UDP是一種無鏈接的數據交換方式,發送數據以前不須要創建鏈接,而TCP要創建完鏈接才能進行數據的傳送。爲了鏈接多個客戶端,須要使用多線程技術,否則由於UDP沒有在發送方和接收方之間建立鏈接,因此沒法區分不一樣的客戶端。
答:對於網絡聊天室,咱們可使用BufferedReader和BufferedWriter字符流來進行數據的接收和發送操做來實現用戶和用戶之間的通訊。在Java的網絡編程中,咱們先要使用套接字來建立一個對象,而後咱們要進行網絡之間的通訊,這時候就要用到Java中的各類IO流,所以,JAVA的IO流是網絡編程中進行數據傳輸的主要途徑。
閱讀ServerAndThread目錄中的源代碼
答:這個程序的功能是用於鏈接客戶端和服務端,讓它們能夠進行通訊,相似一個簡易的聊天系統。學號直接加在標題欄了,簡單粗暴……
ServerChart
:服務端的界面框架ServerReadThread
:與客戶端進行通訊,並將接收的消息顯示出來ServerActionListener
:服務端動做監聽器,爲服務端界面的按鈕添加監聽事件ClientChart
:客戶端的界面框架ClientReaderThread
:與服務端進行通訊,並將接收的消息顯示出來ClientListener
:客戶端動做監聽器,爲客戶端界面的按鈕添加監聽事件MainThread
:讓客戶端與服務端創建鏈接,將線程放入列表讓服務端去讀取1.客戶端界面接收到的消息沒法區分是誰發送的。
改進方法:在客戶端和服務端發送消息時就標記上是誰發送的。
2.服務端接收的消息沒有換行。
改進方法:在服務端顯示在本身的消息上加一個換行符。
3.不管先關閉哪一端,都會讓另外一端由於還在不停請求輸入流而不斷輸出報錯信息。
改進方法:當另外一端關閉時,在處理異常時直接使用break
退出請求。