Python课程设计 第 50 / 52 篇
第四阶段项目-参考答案
共享网盘(SharedNetworkDisk)
写一个共享网盘的程序,要求使用面向对象且按照软件开发规范进行设计,必须具备以下功能:
- 至少包含用户和文件两个类,用户可以注册登陆
- 用户上传的文件可以是普通文件,图片或者视频
- 上传的数据要用md5加密
- 上传的时候不能粘包
- 存储的时候保证文件名,文件md5值和文件内容都保存在服务端机器上
- 用md5值校验重复文件内容,用户上传的重复文件,不通过网络传输
TCP协议传输大文件 - 服务端
from socket import *
import struct
server_address = ('127.0.0.1', 8080)
server = socket(AF_INET, SOCK_STREAM)
server.bind(server_address)
server.listen(5)
conn, client_address = server.accept()
print(client_address)
file_name = conn.recv(1024)
print(file_name.decode('utf-8'))
with open(file_name, 'wb') as f:
while True:
file_data = conn.recv(1024)
if file_data:
f.write(file_data)
else:
break
print(file_name, '保存成功')
TCP协议传输大文件 - 客户端
from socket import *
import struct
server_address = ('127.0.0.1', 8080)
client = socket(AF_INET, SOCK_STREAM)
client.connect(server_address)
file_name = '1.mp4'
client.send(file_name.encode('utf-8'))
with open(file_name, 'rb') as f:
while True:
file_data = f.read(1024)
if file_data:
client.send(file_data)
else:
print(file_name, '上传完成')
break
client.close()