Python--day32--ftp文件传输报错的原因
解决办法:把buffer改小
server.py
- #实现一个大文件的上传或下载
- #配置文件 ip地址 端口号
- import json
- import socket
- import struct
- sk = socket.socket()
- #起服务
- sk.bind(('127.0.0.1', 8090))
- sk.listen()
- 10 buffer = 1024
- conn,addr = sk.accept()
- #接收
- head_len = conn.recv(4)
- head_len = struct.unpack('i', head_len)[0]
- json_head = conn.recv(head_len).decode('utf-8')
- head = json.loads(json_head)
- filesize = head['filesize']
- with open(head['filename'], 'wb') as f:
- while filesize:
- print(filesize)
- if filesize >= buffer:
- content = conn.recv(buffer)
- f.write(content)
- filesize -= buffer
- else:
- content = conn.recv(filesize)
- f.write(content)
- break
- conn.close()
- sk.close()
client.py
- #发送端
- import os
- import json
- import struct
- import socket
- sk = socket.socket()
- sk.connect(('127.0.0.1', 8090))
- 8 buffer = 1024
- #发送文件
- head = {'filepath':r'C:\Users\Administrator\Desktop',
- 'filename':r'test.txt',
- 'filesize':None}
- fie_path = os.path.join(head['filepath'],head['filename'])
- filesize = os.path.getsize(os.path.join(head['filepath'],head['filename']))
- head['filesize'] = filesize
- json_head = json.dumps(head) #字典转成了字符串
- bytes_head = json_head.encode('utf-8') #字符串转bytes
- print(json_head)
- print(bytes_head)
- #计算head的长度
- head_len = len(bytes_head) #报头的长度
- pack_len = struct.pack('i', head_len)
- sk.send(pack_len) #先发报头的长度
- sk.send(bytes_head) #再发送bytes类型的报头
- with open(fie_path, 'rb') as f:
- while filesize:
- print(filesize)
- if filesize >= buffer:
- content = f.read(buffer) #每次读出来的内容
- sk.send(content)
- filesize -= buffer
- else:
- content = f.read(filesize)
- sk.send(content)
- break
- sk.close()
Python--day32--ftp文件传输报错的原因的更多相关文章
- 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 ...
- python引用py文件中文报错
文件 a.py 中引用文件 b.py 如果文件b.py中包含中文,会报错. 文件hello.py中代码如下: def say_nihao(): print "你好" 文件main. ...
- Python实现终端FTP文件传输
实现终端FTP文件传输 代码结构: .├── client.py├── readme.txt└── server.py 运行截图: readme.txt tftp文件服务器 项目功能: * 客户端有简 ...
- Python 基于Python实现Ftp文件上传,下载
基于Python实现Ftp文件上传,下载 by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...
- Python numpy 安装以及处理报错 is not a supported wheel on this platform
1. 安装 1)去这里搜索https://pypi.org/ 2)搜索框输入numpy 3)一般第一个就是搜索到的 4)点进去 5) Download files 点进去,找自己的版本 6)nu ...
- python安装包的时候报错
python安装包的时候报错 今天兴致勃勃的安装了一个paramiko包,过程很顺利,但是到结尾的时候报错,这就让人不爽了. 所以呢,需要安装一个名为python-dev的软件包. 该软件包包括头文件 ...
- FTP 文件传输服务
昨晚心血来潮,尝试用python写了一个ftp文件传输服务,可以接收指令,从远程ftp服务器同步指定目录数据,最后没用上,开源出来. https://github.com/jadepeng/ftp_t ...
- 【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.原因,工作队列被占用,只需 ...
- 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工程图片资源命名的问 ...
随机推荐
- 一眼看穿👀JS基本概念
前段时间忙,好久没更新了,继续梳理基础知识这期总结的是JS的基本概念 标识符 所谓的标识符是指变量,函数属性的名字,或者函数的参数 第一个字符必须是一个字母,下划线(_)或者一个美元符号($),其他字 ...
- input 手机数字键盘
要一点击提起数字键盘,安卓只要设置input的类型是number或tel, ios 需要 pattern="number"可以直接打开搜狗输入法的数字键盘,可以输入.和数字如果只能 ...
- jq处理JSON数据, jq Manual (development version)
jq 允许你直接在命令行下对 JSON 进行操作,包括分片.过滤.转换等等.让我们通过几个例子来说明 jq 的功能:一.输出格式化,漂亮的打印效果如果我们用文本编辑器打开 JSON,有时候可能看起来会 ...
- Permutations 全排列 回溯
Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...
- 【JZOJ4756】【NOIP2016提高A组模拟9.4】幻象
题目描述 phantom是一位爱思考的哲♂学家. 最近phantom得到了森の妖精的真传.在他练功的时候, 每秒他的思绪中都有一定的概率浮现出奇♂异的幻象,持续x秒的幻象将产生x^2 的幻象值. ph ...
- oralce Sysdba和sysoper的区别
Sysdba是一个允许读者执行任何数据库任务的全能特权.Sysoper是一个威力次之的特权,它赋予了启动和关闭能力,但限制其他管理性任务
- 【AtCoder Regular Contest 092】C.2D Plane 2N Points【匈牙利算法】
C.2D Plane 2N Points 题意:给定N个红点二维坐标N个蓝点二维坐标,如果红点横纵坐标都比蓝点小,那么它们能够构成一组.问最多能构成多少组. 题解:把满足要求的红蓝点连线,然后就是匈牙 ...
- HZOJ 巨神兵
60pts: 每个DAG的拓扑序是唯一的,所以考虑将DAG分层.f[i][j]记录当前选择的节点状态是i,最后一层的节点状态为j(dep取最大). 初始状态:$f[i][i]=1;i\in [1,1& ...
- ssh scp nc
ssh远程连接 ssh root@192.168.111.11 scp数据传输,(secure copy) 1.下载.拉取 scp root@192.168.111.11:/root/database ...
- Laravel 的HTTP控制器
简介# 除了在路有文件中以闭包的形式定义所有的请求处理逻辑外,还可以使用控制器类来组织此类行为,控制器能够将相关 的请求处理逻辑组成的一个单独的类,控制器被存放在app/Http/Controller ...