20193316 实验三《Python程序设计》实验报告
课程:《Python程序设计》
班级:1933
姓名:姜灼
学号:20193316
实验教师:王志强
实验日期:2020年5月23日
必修/选修: 公选课
## 1.实验内容
客户端:
import socket
import base64
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 8001))
print("加密后的内容:")
with open(r"C:Users86138Desktop182220182204.txt", 'r',encoding='UTF-8') as f:
data=f.readline().encode()
based_data1 = base64.b64encode(data)
print(based_data1)
open(r"C:Users86138Desktop193320193316.txt", "w").close()
with open(r"C:Users86138Desktop193320193316.txt", 'wb') as f:
f.write(based_data1)
with open(r"C:Users86138Desktop193320193316.txt", 'rb') as f:
for i in f:
s.send(i)
data = s.recv(1024)
if data != b'success':
break
s.send('quit'.encode())
print("解密后的内容:")
file = s.recv(1024)
with open('file', 'r', encoding='UTF-8') as f:
print(f.readline())
f.close()
服务器:
import socket
import struct
import base64
FILEINFO_SIZE=struct.calcsize('128s32sI8s')
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('127.0.0.1',8001))
s.listen(5)
conn,address=s.accept()
print("文件接收开始")
with open('file', 'ab' ) as f:
# 接收数据
data = conn.recv(1024)
if data == b'quit':
breakpoint()
# 写入文件
f.write(data)
# 接受完成标志
conn.send('success'.encode())
print("文件接收完成")
# 关闭连接
print("加密后的内容:")
with open('file', 'r',encoding='UTF-8') as f:
based_data1= f.readline().encode()
print(based_data1)
plain_data1 = base64.b64decode(based_data1)
open("file", "w").close()
with open('file', 'wb') as f:
f.write(plain_data1)
print("解密后的内容:")
with open('file', 'r',encoding='UTF-8') as f:
print(f.readline())
with open("file",'rb') as f:
for i in f:
conn.send(i)
data=conn.recv(1024)
if data!= b'success':
break
conn.send('quit'.encode())
s.close()
## 2. 实验过程及结果
## 3. 实验过程中遇到的问题和解决过程
- 问题1:开始做成了UDP编程,后来发现做错了,要做TCP编程
- 问题1解决方案:自我觉察
- 问题2:开始只学会了socket通信的文本发送,后来看到要包含文件的打开和读写
- 问题2解决方案:再去钉钉把文件那一章节的回访看一下,复习一遍
- 问题3:开始打漏了一行代码,client没有建立链接,程序出错
- 问题3解决方案:使用debug,发现问题,然后加入一行代码,s.connect(‘127.0.0.1’,8001)
## 其他(感悟、思考等)
大力感谢王志强老师的精心栽培,带领我们走入Python的大门,领略极致编程之美,同时又培养了我们非同凡响的自学能力,再三感谢!谢谢!谢谢!谢谢!