解决办法:把buffer改小

server.py

  1. #实现一个大文件的上传或下载
  2. #配置文件 ip地址 端口号
  3. import json
  4. import socket
  5. import struct
  6. sk = socket.socket()
  7. #起服务
  8. sk.bind(('127.0.0.1', 8090))
  9. sk.listen()
  10. 10 buffer = 1024
  11. conn,addr = sk.accept()
  12. #接收
  13. head_len = conn.recv(4)
  14. head_len = struct.unpack('i', head_len)[0]
  15. json_head = conn.recv(head_len).decode('utf-8')
  16. head = json.loads(json_head)
  17. filesize = head['filesize']
  18. with open(head['filename'], 'wb') as f:
  19. while filesize:
  20. print(filesize)
  21. if filesize >= buffer:
  22. content = conn.recv(buffer)
  23. f.write(content)
  24. filesize -= buffer
  25. else:
  26. content = conn.recv(filesize)
  27. f.write(content)
  28. break
  29. conn.close()
  30. sk.close()

client.py

  1. #发送端
  2. import os
  3. import json
  4. import struct
  5. import socket
  6. sk = socket.socket()
  7. sk.connect(('127.0.0.1', 8090))
  8. 8 buffer = 1024
  9.  
  10. #发送文件
  11. head = {'filepath':r'C:\Users\Administrator\Desktop',
  12. 'filename':r'test.txt',
  13. 'filesize':None}
  14. fie_path = os.path.join(head['filepath'],head['filename'])
  15. filesize = os.path.getsize(os.path.join(head['filepath'],head['filename']))
  16.  
  17. head['filesize'] = filesize
  18. json_head = json.dumps(head) #字典转成了字符串
  19. bytes_head = json_head.encode('utf-8') #字符串转bytes
  20. print(json_head)
  21. print(bytes_head)
  22. #计算head的长度
  23. head_len = len(bytes_head) #报头的长度
  24. pack_len = struct.pack('i', head_len)
  25. sk.send(pack_len) #先发报头的长度
  26. sk.send(bytes_head) #再发送bytes类型的报头
  27. with open(fie_path, 'rb') as f:
  28. while filesize:
  29. print(filesize)
  30. if filesize >= buffer:
  31. content = f.read(buffer) #每次读出来的内容
  32. sk.send(content)
  33. filesize -= buffer
  34. else:
  35. content = f.read(filesize)
  36. sk.send(content)
  37. break
  38. sk.close()

Python--day32--ftp文件传输报错的原因的更多相关文章

  1. Python读取CSV文件,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 727: illegal multibyte sequence

    Python读取CSV文件,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 727: illegal mul ...

  2. python引用py文件中文报错

    文件 a.py 中引用文件 b.py 如果文件b.py中包含中文,会报错. 文件hello.py中代码如下: def say_nihao(): print "你好" 文件main. ...

  3. Python实现终端FTP文件传输

    实现终端FTP文件传输 代码结构: .├── client.py├── readme.txt└── server.py 运行截图: readme.txt tftp文件服务器 项目功能: * 客户端有简 ...

  4. Python 基于Python实现Ftp文件上传,下载

    基于Python实现Ftp文件上传,下载   by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...

  5. Python numpy 安装以及处理报错 is not a supported wheel on this platform

    1.    安装 1)去这里搜索https://pypi.org/ 2)搜索框输入numpy 3)一般第一个就是搜索到的 4)点进去 5) Download files 点进去,找自己的版本 6)nu ...

  6. python安装包的时候报错

    python安装包的时候报错 今天兴致勃勃的安装了一个paramiko包,过程很顺利,但是到结尾的时候报错,这就让人不爽了. 所以呢,需要安装一个名为python-dev的软件包. 该软件包包括头文件 ...

  7. FTP 文件传输服务

    昨晚心血来潮,尝试用python写了一个ftp文件传输服务,可以接收指令,从远程ftp服务器同步指定目录数据,最后没用上,开源出来. https://github.com/jadepeng/ftp_t ...

  8. 【svn】在提交文件是报错:previous operation has not finished;run 'cleanup' if it was interrupted

    1.svn在提交文件是报错:previous operation has not finished;run 'cleanup' if it was interrupted2.原因,工作队列被占用,只需 ...

  9. R.java 文件内报错:Underscores can only be used with source level 1.7 or greater。

    R.java 文件内报错:Underscores can only be used with source level 1.7 or greater 网上查找后得知是Android工程图片资源命名的问 ...

随机推荐

  1. 一眼看穿👀JS基本概念

    前段时间忙,好久没更新了,继续梳理基础知识这期总结的是JS的基本概念 标识符 所谓的标识符是指变量,函数属性的名字,或者函数的参数 第一个字符必须是一个字母,下划线(_)或者一个美元符号($),其他字 ...

  2. input 手机数字键盘

    要一点击提起数字键盘,安卓只要设置input的类型是number或tel, ios 需要 pattern="number"可以直接打开搜狗输入法的数字键盘,可以输入.和数字如果只能 ...

  3. jq处理JSON数据, jq Manual (development version)

    jq 允许你直接在命令行下对 JSON 进行操作,包括分片.过滤.转换等等.让我们通过几个例子来说明 jq 的功能:一.输出格式化,漂亮的打印效果如果我们用文本编辑器打开 JSON,有时候可能看起来会 ...

  4. Permutations 全排列 回溯

    Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...

  5. 【JZOJ4756】【NOIP2016提高A组模拟9.4】幻象

    题目描述 phantom是一位爱思考的哲♂学家. 最近phantom得到了森の妖精的真传.在他练功的时候, 每秒他的思绪中都有一定的概率浮现出奇♂异的幻象,持续x秒的幻象将产生x^2 的幻象值. ph ...

  6. oralce Sysdba和sysoper的区别

    Sysdba是一个允许读者执行任何数据库任务的全能特权.Sysoper是一个威力次之的特权,它赋予了启动和关闭能力,但限制其他管理性任务

  7. 【AtCoder Regular Contest 092】C.2D Plane 2N Points【匈牙利算法】

    C.2D Plane 2N Points 题意:给定N个红点二维坐标N个蓝点二维坐标,如果红点横纵坐标都比蓝点小,那么它们能够构成一组.问最多能构成多少组. 题解:把满足要求的红蓝点连线,然后就是匈牙 ...

  8. HZOJ 巨神兵

    60pts: 每个DAG的拓扑序是唯一的,所以考虑将DAG分层.f[i][j]记录当前选择的节点状态是i,最后一层的节点状态为j(dep取最大). 初始状态:$f[i][i]=1;i\in [1,1& ...

  9. ssh scp nc

    ssh远程连接 ssh root@192.168.111.11 scp数据传输,(secure copy) 1.下载.拉取 scp root@192.168.111.11:/root/database ...

  10. Laravel 的HTTP控制器

    简介# 除了在路有文件中以闭包的形式定义所有的请求处理逻辑外,还可以使用控制器类来组织此类行为,控制器能够将相关 的请求处理逻辑组成的一个单独的类,控制器被存放在app/Http/Controller ...