功能:使用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实现文件的收发相关推荐

  1. 微信小程序的socket.io即时通讯开发(基于E聊SDK)

    1.背景: 由于微信小程序需要开发轻量,跨平台,开发时间短等特点,许多公司将小程序作为了业务展示的第一个APP.E聊客户端核心SDK 通讯部分已适配了微信小程序平台,下面分享一下适配过程中的思路与方法 ...

  2. 微信小程序-01-项目组成文件介绍(入门篇)

    自古开篇先说两句,写这些笔记不是学习用的,主要是后续分享一些遇到的坑,碰到过什么样的问题,怎么去解决,如果你不是一个很耐心无看文章的人,建议去 网易云课堂找一些课程,跟着别人的脚步或许会更有动力,我的 ...

  3. 微信小程序代码组成 小程序涉及到的文件类型

    小程序由配置代码JSON文件.模板代码 WXML 文件.样式代码 WXSS文件以及逻辑代码 JavaScript文件组成 我们通过开发者工具快速创建了一个 QuickStart 项目.你可以留意到这个 ...

  4. 微信小程序直接上传文件到阿里云OSS组件封装

    微信小程序直接上传文件到OSS 1. 封装公共方法 在根目录utils目录新建一个upload文件夹: // utils/upload/base64.jsvar base64EncodeChars = ...

  5. 微信小程序开发之.js文件

    1.注册小程序 App()函数用于注册一个小程序,参数为一个Object(可以把它理解成为一个类似于C++里的对象,在里面我们封装了一些基本的数据类型也就是我们所称的属性,还有一些方法,也就是我们所称 ...

  6. 微信小程序 格式化金额 .wxs文件

    微信小程序 格式化金额 .wxs文件 废话不多说 直接上代码 money.wxs 文件 /* 价格格式化 补零 与 三位数逗号 参数str可为数字 || 字符串 */var money = funct ...

  7. spring boot接收微信小程序上传的文件

    spring boot接收微信小程序上传的文件,首先前台传给我们后端的不是一个路径,而是以一个文件类型传递给我,这时我们在controller层接收时就可以用MultipartFile进行接收,如果接 ...

  8. 微信小程序中处理PDF文件

    一直在尝试要在微信小程序中处理PDF文件,包括生成PDF文件和检测某个PDF文档的页数,但是微信小程序的接口不支持这个功能,只能是想办法在js文件中实现这个代码,这个代码的实现需要pdf-lib 这个 ...

  9. 二、微信小程序-快速回顾 ( 页面文件 )

    文章目录 一.页面配置文件 - json 二.页面逻辑文件 - js 三.页面布局文件 - wxml 3.1. 页面布局常用标签 3.2. 页面渲染常用指令 3.2.1. 数据绑定 - mustach ...

  10. 小程序/Vant UI 实现文件的上传

    小程序/Vant UI 实现文件的上传 第一次接触小程序上传的时候,自己经过一些实验测试并记录下来以供大家学习. 使用vant UI的官网地址:Vant Weapp - 轻量.可靠的小程序 UI 组件 ...

最新文章

  1. Matlab/Simulink ROS
  2. 《HTML5与CSS3实例教程》
  3. Dubbo 源码分析 - SPI 机制
  4. JavaScript 经常忽略的 7 个基础知识点
  5. WPF之Binding(转)
  6. mysql coreseek_centos+php+coreseek+sphinx+mysql之一coreseek安装篇
  7. dosbox edit.exe 如何使用_宅家30天,2万字节java高级工程师面试题解析,如何斩获阿里p7...
  8. Mr.J--C语言编译错误C3861
  9. 教大家抖音怎么开通直播功能
  10. PHP中的e标签和em标签一样吧,html em标签的作用
  11. 技校学计算机和本科计算机,中专计算机专业学什么,中专和技校的区别​
  12. Mac好用的截图工具:Snipaste
  13. python+Aritest自动化——03—test_cace.py—写自动化测试用例
  14. 第六届信息类研究生学术论坛参赛有感
  15. Flutter仿闲鱼底部导航栏实现
  16. WiFi的2.4G、5G、6G频段
  17. SAP中内部订单状态导致不能收货处理实例
  18. 计算机考研真题解析---计算机网络
  19. MySQL中PreparedStatement sql中in的引号问题
  20. BI领导驾驶舱-企业管理者不可或缺的决策帮手

热门文章

  1. keepalived高可用配置注意事项
  2. 转: hibernate配置文件hibernate.cfg.xml和.hbm.xml的详细解释
  3. C/C++/Objective-C经典书籍推荐
  4. Lua5.1 升级 Lua5.3 升级 小结
  5. 一位华为底层老员工的中年危机,发人深思!
  6. CentOS 7部署Kafka和Kafka集群
  7. 孤岛能源安卓游戏源码
  8. 团队管理心得--建团队,管事理人
  9. linux下apache2两种工作模式及两者切换
  10. 深入理解socket编程的几个函数和两种fd