python文件操作实验报告_20193120 实验三《Python程序设计》实验报告
實驗三
(一)實驗內(nèi)容
創(chuàng)建服務(wù)端和客戶端,服務(wù)端在特定端口監(jiān)聽多個客戶請求。客戶端和服務(wù)端通過Socket套接字(TCP/UDP)進行通信。
(二)實驗要求
(1)創(chuàng)建服務(wù)端和客戶端,選擇一個通信端口,用Python語言編程實現(xiàn)通信演示程序;
(2)要求包含文件的基本操作,例如打開和讀寫操作。
(3)要求發(fā)送方從文件讀取內(nèi)容,加密后并傳輸;接收方收到密文并解密,保存在文件中。
(4)程序代碼托管到碼云。
(三)實驗報告
課程:《Python程序設(shè)計》
班級: 1931
姓名: NO WAY
學號:20193120
實驗教師:NO WAY
實驗日期:2020年5月16日
必修/選修: 公選課
1.實驗內(nèi)容
client端:先對消息進行加密,再發(fā)送加密后消息。
sever端:接收client發(fā)來的消息,然后解密,將解密后的內(nèi)容放到文件中。
2. 實驗過程及結(jié)果
client端:
1:與server端進行連接,并處理需要傳送的內(nèi)容。
2:用戶將需要傳送的內(nèi)容寫到指定文件中,然后保存,運行代碼即可進行傳輸。
3:在client端進行加密,將加密后的內(nèi)容整合成一個字符串,編碼后統(tǒng)一傳輸過去。
server端:
1:與client端進行連接,傳輸內(nèi)容。
2:編寫代碼進行解碼。其中專門設(shè)置一個函數(shù)“decode”進行解碼,返回值為解密好的內(nèi)容。
3:打開一個新的文件,將解密好的內(nèi)容寫到文件中。
(之后一定要記得寫file.close()!!!)
運行:
先運行server端,再運行client端。結(jié)果如下:
字符通過加密的形式成功傳輸,并被server端進行解密,解密之后內(nèi)容被放到了新的文件當中。
3. 實驗過程中遇到的問題和解決過程
問題1:加密方案
問題1解決方案:
為防止加密后的字符超過ASCII碼的范圍,所以對ASCII碼值小于125的字符進行加密。
另外,對原來的'\n'進行加密的時候,會出現(xiàn)系統(tǒng)無法識別(正方形中有一個問號)的情況,所以不對轉(zhuǎn)行字符進行加密。
問題2:無法處理讀取后的文件
問題2解決方案:因為讀取完文件之后,沒有寫file.close(),所以無法刪除
只需要在讀取完成之后,加上file.close()即可
問題3:傳輸和解碼問題
問題3解決方案:
對于傳輸問題,先把加密后的每一個字符用空格隔開,然后編碼成二進制之后,用sendall全部送過去。
解碼問題,server端收到之后,先進行decode獲得密文,再用split函數(shù),以空格為間隔,將發(fā)過來的每個字符單獨拆分成一個列表元素,然后server端的密鑰進行一一解碼。
問題4:附加bug
原因:在用ASCII碼關(guān)系解密的時候,遇到了空字符串,無法解密,系統(tǒng)報錯。
解決辦法:因為列表的最后元素是空字符串,所以會報錯。只需這樣修改即可修復(fù)bug:
for i in range(len(unknown)-1):
或者在解密部分這樣修改:
elif ord(unknown[i]) <= 125 and unknown[i] != '':
修改后,程序正常運行。
其他(感悟、思考等)
1:上述加密辦法屬于簡單的加密辦法,類似于凱撒密碼,很容易被破解,需要用高級加密算法才能避免其被輕松破解。
2:目前只能對ASCII字符進行加密,遇到其他不屬于ASCII碼范圍的字符,例如中文字符,則無能為力。
3:QQ能做到上傳各種文件到群文件或者傳輸給其他人。如果可能的話,還可以增加傳輸其他類型文件的功能,這個代碼目前只支持傳輸txt文件。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的python文件操作实验报告_20193120 实验三《Python程序设计》实验报告的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Accumulator
- 下一篇: python get rect 函数_p