【小程序】使用socket实现文件的收发
功能:使用socket实现文件的收发,客户端发送[get 文件名],在客户端接收服务端的文件,接受后校验MD5值。
client端:
import socket,hashlibclient=socket.socket()client.connect(('localhost',9999))while True:msg=input('>>>').strip()if len(msg)==0:continueif msg.startswith('get'):client.send(msg.encode('utf-8'))server_response=client.recv(1024)print('file size:',server_response.decode())client.send('...'.encode('utf-8'))file_total_size=int(server_response.decode())recv_size=0filename=msg.split()[1]f=open(filename+'_new','wb')m=hashlib.md5()while recv_size<file_total_size:data=client.recv(1024)recv_size+=len(data)f.write(data)m.update(data)print('recv:%d/%d'%(recv_size,file_total_size))else:print('recv done...')f.close()new_file_md5=m.hexdigest()client.send('recv done'.encode('utf-8'))server_files_md5=client.recv(1024).decode()print('server_files_md5:',server_files_md5)print('new_file_md5:',new_file_md5)client.close()
server端:
import socket,os,hashlibserver=socket.socket() server.bind(('localhost',9999)) print('waiting...') server.listen() while True:conn,addr=server.accept()print('new conn:',addr)while True:data=conn.recv(1024).decode()if not data:print('客户端断开...')breakprint('data',data)cmd,filename=data.split()print('cmd:',cmd)print('filename:',filename)if os.path.isfile(filename):file_size=os.stat(filename).st_sizeconn.send(str(file_size).encode('utf-8'))conn.recv(1024).decode()#防粘包f = open(filename,'rb')m=hashlib.md5()for line in f:m.update(line)conn.send(line)#按行发送res_md5=m.hexdigest()print('MD5:',res_md5)f.close()conn.recv(1024).decode()#防粘包conn.send(res_md5.encode('utf-8'))#发送MD5print('send done')server.close()
转载于:https://www.cnblogs.com/q1ang/p/9118917.html
【小程序】使用socket实现文件的收发相关推荐
- 微信小程序的socket.io即时通讯开发(基于E聊SDK)
1.背景: 由于微信小程序需要开发轻量,跨平台,开发时间短等特点,许多公司将小程序作为了业务展示的第一个APP.E聊客户端核心SDK 通讯部分已适配了微信小程序平台,下面分享一下适配过程中的思路与方法 ...
- 微信小程序-01-项目组成文件介绍(入门篇)
自古开篇先说两句,写这些笔记不是学习用的,主要是后续分享一些遇到的坑,碰到过什么样的问题,怎么去解决,如果你不是一个很耐心无看文章的人,建议去 网易云课堂找一些课程,跟着别人的脚步或许会更有动力,我的 ...
- 微信小程序代码组成 小程序涉及到的文件类型
小程序由配置代码JSON文件.模板代码 WXML 文件.样式代码 WXSS文件以及逻辑代码 JavaScript文件组成 我们通过开发者工具快速创建了一个 QuickStart 项目.你可以留意到这个 ...
- 微信小程序直接上传文件到阿里云OSS组件封装
微信小程序直接上传文件到OSS 1. 封装公共方法 在根目录utils目录新建一个upload文件夹: // utils/upload/base64.jsvar base64EncodeChars = ...
- 微信小程序开发之.js文件
1.注册小程序 App()函数用于注册一个小程序,参数为一个Object(可以把它理解成为一个类似于C++里的对象,在里面我们封装了一些基本的数据类型也就是我们所称的属性,还有一些方法,也就是我们所称 ...
- 微信小程序 格式化金额 .wxs文件
微信小程序 格式化金额 .wxs文件 废话不多说 直接上代码 money.wxs 文件 /* 价格格式化 补零 与 三位数逗号 参数str可为数字 || 字符串 */var money = funct ...
- spring boot接收微信小程序上传的文件
spring boot接收微信小程序上传的文件,首先前台传给我们后端的不是一个路径,而是以一个文件类型传递给我,这时我们在controller层接收时就可以用MultipartFile进行接收,如果接 ...
- 微信小程序中处理PDF文件
一直在尝试要在微信小程序中处理PDF文件,包括生成PDF文件和检测某个PDF文档的页数,但是微信小程序的接口不支持这个功能,只能是想办法在js文件中实现这个代码,这个代码的实现需要pdf-lib 这个 ...
- 二、微信小程序-快速回顾 ( 页面文件 )
文章目录 一.页面配置文件 - json 二.页面逻辑文件 - js 三.页面布局文件 - wxml 3.1. 页面布局常用标签 3.2. 页面渲染常用指令 3.2.1. 数据绑定 - mustach ...
- 小程序/Vant UI 实现文件的上传
小程序/Vant UI 实现文件的上传 第一次接触小程序上传的时候,自己经过一些实验测试并记录下来以供大家学习. 使用vant UI的官网地址:Vant Weapp - 轻量.可靠的小程序 UI 组件 ...
最新文章
- Matlab/Simulink ROS
- 《HTML5与CSS3实例教程》
- Dubbo 源码分析 - SPI 机制
- JavaScript 经常忽略的 7 个基础知识点
- WPF之Binding(转)
- mysql coreseek_centos+php+coreseek+sphinx+mysql之一coreseek安装篇
- dosbox edit.exe 如何使用_宅家30天,2万字节java高级工程师面试题解析,如何斩获阿里p7...
- Mr.J--C语言编译错误C3861
- 教大家抖音怎么开通直播功能
- PHP中的e标签和em标签一样吧,html em标签的作用
- 技校学计算机和本科计算机,中专计算机专业学什么,中专和技校的区别​
- Mac好用的截图工具:Snipaste
- python+Aritest自动化——03—test_cace.py—写自动化测试用例
- 第六届信息类研究生学术论坛参赛有感
- Flutter仿闲鱼底部导航栏实现
- WiFi的2.4G、5G、6G频段
- SAP中内部订单状态导致不能收货处理实例
- 计算机考研真题解析---计算机网络
- MySQL中PreparedStatement sql中in的引号问题
- BI领导驾驶舱-企业管理者不可或缺的决策帮手