20192310 实验三《Python程序设计》实验报告
学号 20192310 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 1923
姓名: 严嘉钰
学号:20192310
实验教师:王志强
实验日期:2020年5月22日
必修/选修: 公选课
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解决方案:上网查找报错原因解决
- 问题2:对文件操作部分有些遗忘
- 问题2解决方案:查找了《python从入门到实践》一书获得答案
- ...
其他(感悟、思考等)
对比了其他同学做的实验作业,有些编的我都看不懂,感觉自己的差距还是很大的,好好钻研《python从入门到入土》吧
参考资料
《python从入门到实践》