客户端

import os
import json
import struct
import socket

sk = socket.socket()
sk.connect(('127.0.0.1',8000))

def get_filename(file_path):
    return os.path.basename(file_path)

operate = ['upload','download']
for num, opt in enumerate(operate,1):
    print(num, opt)

num = int(input("请输入您要做的操作号:"))
if num == 1:
    file_path = input("请输入要上传的文件路径:")
    file_size = os.path.getsize(file_path)
    file_name = get_filename(file_path)
    # 构建字典
    dic = {'operate':'upload','filename':file_name,'filesize':file_size}

    # 序列化为字符串 进行传输
    str_dic = json.dumps(dic).encode('utf-8')
    ret = struct.pack('i',len(str_dic))  # 把序列化后的字典大小转换成一个4字节的数
    sk.send(ret)
    sk.send(str_dic)
    with open(file_path, 'rb') as f:
        while file_size:
            content = f.read(1024)
            sk.send(content)
            file_size -= len(content)
elif num == 2:
    """下载"""
    pass

sk.close()
client.py

相关文章: