20192305 王梓全Python程序設計實驗三報告
20192305 王梓全Python程序設計實驗三報告
課程:《Python程序設計》
班級: 1923
姓名: 王梓全
學號:20192305
實驗教師:王志強
實驗日期:2021年5月24日
必修/選修:公選課
1.實驗內容
- 創建服務端和客戶端,服務端在特定端口監聽多個客戶請求。客戶端和服務端通過Socket套接字(TCP/UDP)進行通信。
2.實驗過程及結果
- (1)創建服務端和客戶端,選擇一個通信端口,用Python語言編程實現通信演示程序;
- (2)讓用戶輸入需要發送的文件名后打開并讀取文件內容
- (3)發送方從文件讀取內容,加密后傳輸;
- (4)接收方收到密文并解密,保存在文件中。
- (5)程序代碼托管到碼云
發送方
作者:王梓全
import socket
import sys
import base64
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 8001))
except socket.error as err:
print(err)
sys.exit(1)
except socket.error as err:
print(err)
sys.exit(1)
path = input("請輸入待傳輸文件的路徑:")
with open(path, 'r') as object:
str = object.read(1024).encode('utf-8')
print("加密中")
strencode = base64.b64encode(str)
print("加密完畢")
s.sendall(strencode)
data = s.recv(1024)
print(data)
服務器端
作者:王梓全
import socket
import base64
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', 8001))
s.listen()
except socket.error as err:
print(err)
err.exit(1)
conn, address = s.accept()
data = conn.recv(1024)
print("已接收到文件:" + data.decode())
conn.sendall(("服務器已經接收到信號" + str(data)).encode())
with open(r'C:/Intel/receive.txt', 'w+') as rec:
strdecode = base64.b64decode(data)
rec.write(strdecode.decode("utf-8"))
print("已終止")
s.close()


3. 實驗過程中遇到的問題和解決過程
- 問題1:初次使用base64加密,不知道將str轉換成byte格式才行
- 問題1解決方案:上網查找報錯原因解決
- 問題二:對文件操作部分有些遺忘
- 問題二解決方案:查找了《python從入門到實踐》一書獲得答案
其他(感悟、思考等)
python是一門面向對象的語言,其語言簡潔,且對類型要求較弱,與C語言相比更適合初學者。python中許多語法不加記憶容易遺忘,需要經常的編寫程序以及翻看教學資源以求熟練。對比了其他同學做的實驗作業,有些編的我都看不懂,感覺自己的差距還是很大的,好好鉆研《python從入門到入土》吧
參考資料
- 《python從入門到實踐》

浙公網安備 33010602011771號