python day32--struct,文件上传下载
一、struct模块
可以把要发送的数据长度转换成固定长度的字节
struct.pack('i',数据长度)
struct.unpack('i',数据长度)
二、上传下载文件作业
server
import struct
import socket
import json
import os
sk=socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
conn,addr=sk.accept()
header_len=conn.recv(4)
header_len=struct.unpack('i',header_len)[0]
header_by=conn.recv(header_len)
header=json.loads(header_by)
filename=header['filename']
fileside=header['fileside']
buffer=4096
with open(filename,'wb') as f:
while fileside:
if fileside>=buffer:
content=conn.recv(buffer)
f.write(content)
fileside-=buffer
print(fileside)
else:
content=conn.recv(fileside)
break
conn.close()
sk.close()
client
import struct
import socket
import json
import os
sk=socket.socket()
sk.connect(('127.0.0.1',8080))
header={'filepath':r'E:\人工智能python课件\基础班-就业班课件资料 -1-4位基础班 5-14就业班\14-人工智能阶段:-机器学习-深度学习-实战项目\30-36深度学习'
,'filename':r'对抗生成网络.zip'
,'fileside':None}
file_path=os.path.join(header['filepath'],header['filename'])
header['fileside']=os.path.getsize(file_path)
fileside=header['fileside']
json_header=json.dumps(header).encode('utf-8')
header_len=struct.pack('i',len(json_header))
sk.send(header_len)#发送报文的长度
sk.send(json_header)#发送报文
buffer=4096
with open(file_path,'rb') as f:
while fileside:
if fileside>=buffer:
content=f.read(buffer)
sk.send(content)
fileside-=buffer
print(fileside)
else:
content = f.read(fileside)
sk.send(content)
break
sk.close()
python day32--struct,文件上传下载的更多相关文章
- Python 基于Python实现Ftp文件上传,下载
基于Python实现Ftp文件上传,下载 by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...
- Python接口自动化——文件上传/下载接口
〇.前言 文件上传/下载接口与普通接口类似,但是有细微的区别. 如果需要发送文件到服务器,例如:上传文档.图片.视频等,就需要发送二进制数据,上传文件一般使用的都是 Content-Type: mul ...
- 文件上传下载、socketserver(并发)、解读socketserver源码
1.文件上传/下载 学习了socket套接字,我们现在可以写一个文件上传/下载的程序,如下示例: 分析上边代码,我们发现,client发送上传文件相关信息的字典序列化之后,server又给client ...
- python3 + selenium 之文件上传下载
文件上传 文件上传下载的联系html: uplad.html <html> <head> <meta http-equiv="content-type" ...
- python paramiko实现ssh上传下载执行命令
paramiko ssh上传下载执行命令 序言 最近项目经常需要动态在跳板机上登录服务器进行部署环境,且服务器比较多,每次完成所有服务器到环境部署执行耗费大量时间.为了解决这个问题,根据所学的执行实现 ...
- Struts的文件上传下载
Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...
- Android okHttp网络请求之文件上传下载
前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...
- Selenium2学习-039-WebUI自动化实战实例-文件上传下载
通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)
艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...
随机推荐
- [GXOI/GZOI2019]旅行者
就我感觉这道题很神仙吗/kel 仔细想想应该也是一种适用范围挺广的做法. 考虑我们可以通过dijkstra在O(nlogn)求出一个点集到另外一个点集的最短路. 那么我们可以通过一些划分点集的方式使得 ...
- Petrozavodsk Winter Camp, Warsaw U, 2014, A The Carpet
一个地图上有若干障碍,问允许出现一个障碍的最大子矩形为多大? 最大子矩形改编 #include<bits/stdc++.h> using namespace std; #define re ...
- x变成y的最少操作次数(层次遍历)
输入x,y,x为源数字,y为目标值.输出x变成y的最少操作次数. x每次可以执行三种操作:-1 . +1 . x2: 如 x=5,y=8:5-1=4,4x2=8;所以输出结果为2(次操作). 可以发现 ...
- servletsza
servlet本身不能独立运行,需要在一个web应用中运行,而web应用是部署在tomcat上的 所以一个servlet开发需要以下几个步骤: ①创建web应用项目 ②编写servlet代码 ③部署到 ...
- php国家或者编码英文字母排序
1.直接复制传入需要排序的字符,然后可以把返回的数据当key,传送给前台function getFirstCharter($str){ if(empty($str)){return '';} $fch ...
- 使用有序GUID:提升其在各数据库中作为主键时的性能
原文出处:https://www.codeproject.com/articles/388157/guids-as-fast-primary-keys-under-multiple-database ...
- 第4天:scipy库
一.SciPy库概述 1.numpy提供向量和矩阵的相关操作,高级计算器 2.SciPy在统计.优化.插值.数值积分.视频转换等,涵盖基础科学计算相关问题. (额,对统计和概率,数理完全一窍不通) 3 ...
- LoadRunner基本简介
# LoadRunner # ## 安装要求 ## 做性能测试的时候,电脑要是一个干净的系统. 尽量是裸装电脑纯净版,不能安装太多的浏览器,支持的有IE.Firefox.chrome ...
- 前端开发面试题总结之——JAVASCRIPT(二)
___________________________________________________________________________________ 相关知识点 数据类型.运算.对象 ...
- C语言:开平方根sqrt程序02
#include <stdio.h> int sqrt01(int x); void main(void){ int x=49,y; y=sqrt01(x); if(y<0) pri ...