1. 程式人生 > 其它 >20202329 實驗四 《資料結構與面向物件程式設計》實驗報告

20202329 實驗四 《資料結構與面向物件程式設計》實驗報告

#20202329 2021-2022-1 《資料結構與面向物件程式設計》實驗四報告

課程:《程式設計與資料結構》
班級:2023
姓名: 張燾
學號:20202329
實驗教師:王志強
實驗日期:2021年10月14日
必修/選修: 必修

一、實驗內容:

(一)Java Socket程式設計

1.學習藍墨雲上教材《Java和Android程式設計》“第16章 輸入/輸出 ”和“第22章 網路”,學習JavaSocket程式設計
2.結對程式設計。結對夥伴A編寫客戶端SocketClient.java,結對夥伴B編寫伺服器端。
3.截圖加學號水印上傳藍墨雲,程式碼push到碼雲,並撰寫實驗報告。

同伴的伺服器

(二)Java和密碼學

參考http://www.cnblogs.com/rocedu/p/6683948.html

以結對的方式完成Java密碼學相關內容的學習(帖子中所有程式碼和相關知識點需要學習)。提交學習成果碼雲連結和代表性成果截圖,要有學號水印。

1.凱撒密碼

2.Java對稱加密-DES演算法

運用生成的金鑰,編寫加密器,生成密文編碼和密文檔案
使用金鑰檔案解密

3 Java非對稱加密-RSA演算法

4 使用金鑰協定建立共享金鑰

5 Java摘要演算法- MD5

(三)編寫有理數/複數計算器

結對程式設計,結對夥伴A編寫有理數計算器。結對夥伴B編寫複數計算器。截圖加水印上傳藍墨雲,程式碼push碼雲。

同伴的複數計算器

(四)遠端有理數計算器

結對程式設計,結對夥伴A程式設計實現客戶端,結果夥伴B實現伺服器端。
客戶端通過鍵盤輸入一個有理數計算的公式(例如:1/4 + 1/6 = ),並把該公式以字串的形式傳送給夥伴B(伺服器端),伺服器端根據字串計算出結果為5/12,並把結果返回給客戶端A,A收到結果後輸出結果。截圖加水印上傳藍墨雲,程式碼push碼雲。

同伴的伺服器

(五)遠端複數計算器

結對程式設計,結對夥伴B程式設計實現客戶端,結果夥伴A實現伺服器端。
客戶端通過鍵盤輸入一個有理數計算的公式(例如:1/4 + 1/6 = ),並把該公式以字串的形式傳送給夥伴A(伺服器端),伺服器端根據字串計算出結果為5/12,並把結果返回給客戶端B,B收到結果後輸出結果。截圖加水印上傳藍墨雲,程式碼push碼雲。
注意實驗四(4)和實驗四(5),一個人不能僅實現客戶端,必須實現一個客戶端和伺服器,否則兩個實驗均不得分!!!

同伴的客戶端

##實驗過程中問題及解決方法

問題1:同伴的伺服器與我的客戶端無法連線

解決方法:首先意識到的是IP地址的選用不對,經過嘗試了幾個過後連線成功(剛開始也想是不是因為連線的不是同一個網而導致的問題,後來連線同一個網又恰巧成功,就把它當作無法連線的原因之一,但當我們在各自的宿舍再次嘗試的時候發現依然可以連線,這說明可能和這一因素沒有太大關係)

問題2:

在密碼學的執行裡面,出現了幾次類似於上述圖片的錯誤,經查詢這是陣列越界

解決方法:對引數進行重新定義便可解決

##其他

本次實驗的難點對於我來說很多,對於一些知識非常的陌生。本次試驗的完成主要以借鑑和求助同學為主,借鑑了很多學長學姐的內容(表示感謝)。除此之外,本次試驗採取結隊的形式完成,剛開始連線不成功的沮喪,無盡的嘗試與尋求幫助,最終連線成功相視而笑,過程雖艱辛,但成功的喜悅是真的掩飾不住。

通過本次超級大實驗後,也要在日後的學習中不斷督促自己快速掌握知識與熟悉知識。

孩子有點累了!