资源简介

代码运行请复制进自己的功能需求中去。 或者直接将py文件放到已经打开的任务下去尝试。 127.0.0.1是计算机内部回环地址, 如果需要和别人玩请把内部回环地址改成自己的ip地址,记住客户端也需要改成你的ip地址,不然查询不到会报错,挡在门口。 文件路径请相互统一一下。如果他的计算机下不存在此地址,就不能存进去。最好丢桌面上,桌面地址请自己去此电脑中查看。 如果出现BUG 请联系我。 谢谢各位使用这么垃圾的功能。 哈哈哈哈哈哈哈哈哈哈哈。

资源截图

代码片段和文件信息

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import struct
import json
import hashlib
import os
from socket import *


# dup C:\Users\Administrator\Desktop\每日笔记\day32\图片2\timg.jpg
# D:\图片\timg.jpg

# 服务器文件路径/: get D:\图片\timg.jpg
# 存放路径/文件路径: C:\Users\Administrator\Desktop\每日笔记\day32\图片\

client = socket(AF_INET SOCK_STREAM)
# print(client)
client.connect((‘127.0.0.1‘ 8082))

while True:
    cmd = input(“服务器文件路径/或者目标地址: “).strip()  # get 文件路径
    addr=input(‘存放路径/目标存放文件路径: ‘).strip()
    if len(cmd) == 0:
        continue
    if len(addr) == 0:
        continue
    cmds file_path = cmd.split()
    if cmds ==‘get‘:
        client.send(cmd.encode(‘utf-8‘))
        # 1、先接收报头的长度
        n = 0
        header = b‘‘
        while n < 4:
            data = client.recv(1)
            header += data
            n += len(data)
        header_size=struct.unpack(‘i‘header)[0]
        # 2、再接收报头
        header_json_bytes=client.recv(header_size)
        header_json=header_json_bytes.decode(‘utf-8‘)
        header_dic=json.loads(header_json)
        print(header_dic)
        # 3、最后接收真实的数据
        total_size=header_dic[‘total_size‘]
        filename=header_dic[‘filename‘]
        recv_size = 0
        with open(fr“{addr}%s“ %filename mode=‘wb‘) as f:
            while recv_size < total_size:
                data = client.recv(1024)
                f.write(data)
                recv_size += len(data)
    elif cmds==‘dup‘:

        client.send(cmd.encode(‘utf-8‘))
        m5 = hashlib.md5()
        with open(fr‘{addr}‘ mode=‘rb‘) as f:
            print(‘打开文件‘)
            for line in f:
                m5.update(line)
        md5 = m5.hexdigest()
        # 一、制作报头
        header_dic = {
            “total_size“: os.path.getsize(addr)
            “filename“: os.path.basename(addr)
            “md5“: md5}
        print(header_dic)
        header_json = json.dumps(header_dic)
        header_json_bytes = header_json.encode(‘utf-8‘)
        # 二、发送数据
        # 1、先发送报头的长度
        header_size = len(header_json_bytes)
        client.send(struct.pack(‘i‘ header_size))
        # 2、再发送报头
        client.send(header_json_bytes)
        # 3、最后发送真实的数据
        with open(fr‘{addr}‘ mode=‘rb‘) as f:
            for line in f:
                client.send(line)
        print(‘文件上传成功!‘)
client.close()



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2671  2020-08-14 18:38  上传下载文件。\3.2 客户端.py

     文件       2607  2020-08-14 18:36  上传下载文件。\3.2 服务端.py

     文件        450  2020-08-14 20:01  上传下载文件。\用前阅读.txt

     目录          0  2020-08-14 19:57  上传下载文件。

----------- ---------  ---------- -----  ----

                 5728                    4


评论

共有 条评论