20155229——實驗五 Java網絡程式設計及安全
實驗内容
實驗一:
兩人一組結對程式設計:
0. 參考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA
結對實作中綴表達式轉字尾表達式的功能 MyBC.java
結對實作從上面功能中擷取的表達式中實作字尾表達式求值的功能,調用MyDC.java
遇到的問題:
打開MyDC後public class MyDC這一行一直标紅,不管在哪個檔案下建立class都一樣,檢查代碼也沒有錯,後來發現是因為其他的檔案下存在同樣名字的class

解決的辦法是将其他的class删除,這樣要運作的MyDC就不會标紅和運作出錯了。
結果截圖
實驗二:
結對程式設計:1人負責用戶端,一人負責伺服器
0. 注意責任歸宿,要會通過測試證明自己沒有問題
基于Java Socket實作用戶端/伺服器功能,傳輸方式用TCP
用戶端讓使用者輸入中綴表達式,然後把中綴表達式調用MyBC.java的功能轉化為字尾表達式,把字尾表達式通過網絡發送給伺服器
伺服器接收到字尾表達式,調用MyDC.java的功能計算字尾表達式的值,把結果發送給用戶端
用戶端顯示伺服器發送過來的結果
TCP
Socket類是Java執行用戶端TCP操作的基礎類,這個類本身使用代碼通過主機作業系統的本地TCP棧進行通信。Socket類的方法會建立和銷毀連接配接,設定各種Socket選項。
ServerSocket類是Java執行伺服器端操作的基礎類,該類運作于伺服器,監聽入站TCP連接配接,每個socket伺服器監聽伺服器的某個端口,當遠端主機的用戶端嘗試連接配接此端口時,伺服器就被喚醒,并傳回一個表示兩台主機之間socket的正常Socket對象。
TCP 構造函數
Socket s=new Socket("127.0.0.1", 10001);//建立一個流套接字并将其連接配接到指定主機上的指定端口号
ServerSocket ss=new ServerSocket(10001);//建立綁定到特定端口的伺服器套接字
服務端和用戶端的聯系
結果截圖
實驗三:
加密結對程式設計:1人負責用戶端,一人負責伺服器
0. 注意責任歸宿,要會通過測試證明自己沒有問題
基于Java Socket實作用戶端/伺服器功能,傳輸方式用TCP
用戶端讓使用者輸入中綴表達式,然後把中綴表達式調用MyBC.java的功能轉化為字尾表達式,把字尾表達式用3DES或AES算法加密後通過網絡把密文發送給伺服器
伺服器接收到字尾表達式表達式後,進行解密(和用戶端協商密鑰,可以用數組儲存),然後調用MyDC.java的功能計算字尾表達式的值,把結果發送給用戶端
用戶端顯示伺服器發送過來的結果
結果截圖
實驗四:
密鑰分發結對程式設計:1人負責用戶端,一人負責伺服器
0. 注意責任歸宿,要會通過測試證明自己沒有問題
基于Java Socket實作用戶端/伺服器功能,傳輸方式用TCP
用戶端讓使用者輸入中綴表達式,然後把中綴表達式調用MyBC.java的功能轉化為字尾表達式,把字尾表達式用3DES或AES算法加密通過網絡把密文發送給伺服器
用戶端和伺服器用DH算法進行3DES或AES算法的密鑰交換
伺服器接收到字尾表達式表達式後,進行解密,然後調用MyDC.java的功能計算字尾表達式的值,把結果發送給用戶端
用戶端顯示伺服器發送過來的結果
結果截圖
實驗五:
完整性校驗結對程式設計:1人負責用戶端,一人負責伺服器
0. 注意責任歸宿,要會通過測試證明自己沒有問題
基于Java Socket實作用戶端/伺服器功能,傳輸方式用TCP
用戶端讓使用者輸入中綴表達式,然後把中綴表達式調用MyBC.java的功能轉化為字尾表達式,把字尾表達式用3DES或AES算法加密通過網絡把密文和明文的MD5値發送給伺服器
用戶端和伺服器用DH算法進行3DES或AES算法的密鑰交換
伺服器接收到字尾表達式表達式後,進行解密,解密後計算明文的MD5值,和用戶端傳來的MD5進行比較,一緻則調用MyDC.java的功能計算字尾表達式的值,把結果發送給用戶端
用戶端顯示伺服器發送過來的結果
結果截圖
我的PSP時間
步驟
耗時
百分比
需求分析
40分鐘
14.81%
設計
40分鐘
14.81%
代碼實作
120分鐘
44.44%
測試
40分鐘
14.81%
分析總結
30分鐘
11.11%
參考資料