server端
tcp协议有黏包现象,通过传输文件大小来减少黏包
密码通过hashlib进行加密
import socketserver
import hashlib
import os
import json
import struct
import logging
#判断身份
def 上传(conn):
#文件下载地址
loads_path='E:\\'
x = conn.recv(4)#接收字典大小
msg_len = struct.unpack('i',x)[0]
g = conn.recv(msg_len).decode()#按照字典大小接收字典防止传输文件和字典粘包
g = json.loads(g)
with open(loads_path+g['file_name'],'wb') as f:
while g['file_size'] > 0:
content = conn.recv(1024)
f.write(content)
g['file_size'] -= len(content)
def 下载(conn):
#和上传逻辑相似
pass
def 判断(conn):
conn.send('用途(上传或下载)'.encode())
user =conn.recv(1024).decode()
#判断用户意图
if user =="上传":
上传(conn)
if user =="下载":
下载(conn)
def 登录(conn):
#记载登录情况
fh =logging.FileHandler('log.log'