20175227張雪瑩 2018-2019-2 《Java程序設計》第十一週學習總結
教材學習內容總結
第十三章 Java網絡編程html
- URL類
- 一個URL對象一般包含最基本的三部分信息:協議、地址、資源。
- URL對象調用
InputStream openStream()
- 方法能夠返回一個輸入流,該輸入流指向URL對象所包含的資源。經過該輸入流能夠將服務器上的資源讀入到客戶端。
- InetAdress類
- 獲取地址
- 可使用InetAddress類的靜態方法
getByName(String s);
- 獲取本地機的地址
- 咱們可使用InetAddress類的靜態方法getLocalHost()得到一個InetAddress對象,該對象含有本地機的域名和IP地址。
- 套接字
- 當兩個程序須要通訊時,它們能夠經過使用Socket類創建套接字對象並鏈接在一塊兒(端口號與IP地址的組合得出一個網絡套接字)。
- 創建鏈接到服務器的套接字對象:
try{ Socket mysocket=new Socket(「http://192.168.0.78」,1880);
}
catch(IOException e)
{ }
try{ ServerSocket serverForClient =new ServerSocket(2010);
}
catch(IOException e){}
- 使用方法
accept()
將客戶的套接字和服務器端的套接字鏈接起來,代碼以下所示:
try{ Socket sc= serverForClient .accept();
}
catch(IOException e){}
- 兩個原則
- 服務器應當啓動一個專門線程,在該線程中和客戶的套接字創建鏈接
- 因爲套接字的輸入流在讀取信息時可能發生阻礙,客戶端和服務器端都須要在一個單獨的線程中讀取信息
- UDP數 據 報
- 基於UDP通訊的基本模式是:
- 將數據打包,稱爲數據包(比如將信件裝入信封同樣),而後將數據包發往目的地。
- 接受別人發來的數據包(比如接收信封同樣),而後查看數據包中的內容。
- 發送數據包
- 用DatagramPacket類將數據打包,即用DatagramPacket類建立一個對象,稱爲數據包。
- 用DatagramSocket類的不帶參數的構造方法:DatagramSocket()建立一個對象,該對象負責發送數據包。
- 接收數據包
- 首先用DatagramSocket的另外一個構造方法
DatagramSocket(int port)
建立一個對象,其中的參數必須和待接收的數據包的端口號相同。
- 而後對象mail_in使用方法
receive(DatagramPacket pack)
接受數據包。
- 用 DatagramPack類的另一個構造方法:
DatagramPack(byte data[],int length)
建立一個數據包,用於接收數據包
- 廣播數據報
- 廣播數據報是一種較新的技術,要廣播或接收廣播的主機都必須加入到同一個D類地址。
- Java 遠程調用(RMI)
- RMI的設計細節
- 擴展Remote接口
- 定義一個接口是java.rmi包中Remote的子接口,即擴展Remote接口。
- 遠程對象
- 建立遠程對象的類必需要實現Remote接口,RMI使用Remote接口來標識遠程對象,可是Remote中沒有方法,所以建立遠程對象的類須要實現Remote接口的一個子接口。
- 存根(Stub)與代理:RMI使用rmic命令生成存根
- 啓動註冊rmiregistry: 執行rimregistry命令
- 啓動遠程對象服務:遠程服務器使用java.rmi包中的Naming類調用其類方法rebind(String name, Remote obj)綁定一個遠程對象到rmiregistry所管理的註冊表中,該方法的name參數是URL格式,obj參數是遠程對象,未來客戶端的代理會經過name 找到遠程對象obj。
- 運行客戶端程序:遠程服務器啓動遠程對象服務後,客戶端就能夠運行有關程序,訪問使用遠程對象。
教材學習中的問題和解決過程
代碼調試中的問題和解決過程
- 問題1:在運行例子1時,出現類錯誤提示
- 問題1解決辦法:將兩個程序分別打包在同一文件夾下,經過輸入
javac -encoding gbk Example13_1.java
,而後成功編譯並運行。
上週考試錯題總結
無java
結對及互評
評分標準
- 正確使用Markdown語法(加1分):
- 不使用Markdown不加分
- 有語法錯誤的不加分(連接打不開,表格不對,列表不正確...)
- 排版混亂的不加分
- 模板中的要素齊全(加1分)
- 缺乏「教材學習中的問題和解決過程」的不加分
- 缺乏「代碼調試中的問題和解決過程」的不加分
- 代碼託管不能打開的不加分
- 缺乏「結對及互評」的不能打開的不加分
- 缺乏「上週考試錯題總結」的不能加分
- 缺乏「進度條」的不能加分
- 缺乏「參考資料」的不能加分
教材學習中的問題和解決過程, 一個問題加1分git
代碼調試中的問題和解決過程, 一個問題加1分編程
- 本週有效代碼超過300分行的(加2分)
- 其餘加分:
- 週五前發博客的加1分
- 感想,體會不假大空的加1分
- 排版精美的加一分
- 進度條中記錄學習時間與改進狀況的加1分
- 有動手寫新代碼的加1分
- 課後選擇題有驗證的加1分
- 代碼Commit Message規範的加1分
- 錯題學習深刻的加1分
- 點評認真,能指出博客和代碼中的問題的加1分
- 結對學習狀況真實可信的加1分
- 扣分:
- 有抄襲的扣至0分
- 代碼做弊的扣至0分
- 遲交做業的扣至0分
點評模板:
博客中值得學習的或問題:服務器
該同窗把老師上課講過的重點列了出來,體現了本身重點學習的過程。網絡
感受感悟那一塊的內容能夠在具體一點,好比說具體遇到什麼問題,如何解決,從中收穫了什麼,或是教材學習中增加的關於調試代碼的經驗。socket
代碼中值得學習的或問題:學習
基於評分標準,我給本博客打分:XX分。得分狀況以下:xxx線程
點評過的同窗博客和代碼
學習進度條
第一週 |
11/11 |
1/1 |
|
|
第二週 |
262/273 |
1/2 |
|
|
第三週 |
642/915 |
1/3 |
|
|
第四周 |
384/1299 |
2/5 |
|
|
第五週 |
661/1960 |
1/6 |
|
|
第六週 |
1031/2991 |
2/8 |
|
|
第七週 |
123/3114 |
2/10 |
|
|
第八週 |
941/4055 |
2/12 |
|
|
第九周 |
1697/5752 |
4/16 |
|
|
第十週 |
1148/6900 |
2/18 |
|
|
第十一週 |
1083/7983 |
1/19 |
|
|
參考資料