tcp文件传输工具

高效解决文件传输问题,支持普通文件和文件夹的传输

####通信协议设计

  1. 基于TCP协议,服务器默认端口号为9999;
  2. 客户端连接服务器成功后,客户端不发送任何消息,服务器端以文件为单位将所有数据依次发送给客户端,在发送单个文件时,首先将该文件的描述信息(定长包头,长度为347B)发送给客户端,紧接着发送文件数据给客户端,这样就完成了一个文件的发送,当发送完所有文件数据后就断开连接;
  3. 文件描述信息结构为:文件名(300B,右边填充空格,UTF-8编码,如果发送的是一个普通文件,该字段的值为其文件名,如果发送的是一个文件夹,该字段的值为文件的相对路径,即相对要发送的文件夹的路径,没有斜线前缀) + 文件大小(15B,右边填充空格,如果为空文件夹,该字段的值为-1) + 文件MD5值(32B,大写形式,如果是空文件夹,该字段的值为32个空格)

客户端:

import socket
import sys
import os
import hashlib
import time
import progressbar

# 引入一个md5值
def get_file_md5(file_path):
    m = hashlib.md5()
    
	# 文件遍历
    with open(file_path, "rb") as f:
        while True:
            data = f.read(1024)
            if len(data) == 0:
                break
          
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值