使用python socket分发大文件的实现方法


Posted in Python onJuly 08, 2019

思路:

使用socket传输文件过程中,如果单次传输每次只能发送一部分数据,如果针对大文件,一次传输肯定是不行的,所以需要我们在传输的时候提前把传输内容的大小先发送给客户端,在客户端循环接收数据即可。

代码部分:

一、服务器

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#environment:2.7

import os,json,time,socket
sk = socket.socket()
ip_port=('127.0.0.1',9600)
sk.bind(ip_port)
sk.listen(5)
file_path = '/root/update/123.txt'
file_name = file_path.rsplit(os.sep,1)[1] 
file_size = os.path.getsize(file_path)  #获取文件内容大小
#发送给客户端的头部信息
header_data = {
  'file_name': file_name,
  'file_size': file_size,
  'date': time.strftime('%Y-%m-%d %X',time.localtime()),
  'charset': 'utf-8'
}
while True:
  conn, addr = sk.accept()
  print("%s:%s is connect"% addr)
  request_data = conn.recv(1024)
  print(request_data)
  # 把头部内容发送过去
  conn.send(json.dumps(header_data))
  request_data1 = conn.recv(1024)
  print(request_data1)
  f = open(file_path,'r')
  content = f.read()
  #发送文件内容
  conn.sendall(content)
  conn.close()

二、客户端

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#environment:2.7

import socket,json
while True:
  sk = socket.socket()
  ip_port = ('127.0.0.1',9600)
  sk.connect(ip_port)
  user_input = raw_input('>>>:').strip()
  if len(user_input) == 0:continue
  if user_input == 'q':break
  sk.send(user_input)
  server_head_msg = json.loads(sk.recv(1024))
  print(server_head_msg)
  #文件名res_name,文件大小res_size
  res_name = server_head_msg['file_name']
  res_size = server_head_msg['file_size']
  sk.send('已经收到头部信息,你可以发送数据了')
  #下面是循环接收文件内容的部分
  num = res_size/1024.0
  if num != int(num):
    num = int(num) +1
  else:
    num = int(num)
  for i in range(num):
    content = sk.recv(1024)
    print(content)

备注:在接收服务器端发送来的文件也按照判断每次接收数据的大小来考虑,大致思路如下

res = ''
recive_size = 0
while recive_size <= res_size:
  data = sk.recv(1024)
  recive_size += len(data)
  res += data
else:
  print(res)
  print('done'.center(40,'='))

以上这篇使用python socket分发大文件的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用python实现的可以拷贝或剪切一个文件列表中的所有文件
Apr 30 Python
Python常用列表数据结构小结
Aug 06 Python
Python解析nginx日志文件
May 11 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
Python 通过打码平台实现验证码的实现
May 13 Python
python3实现elasticsearch批量更新数据
Dec 03 Python
TensorFlow保存TensorBoard图像操作
Jun 23 Python
如何基于python把文字图片写入word文档
Jul 31 Python
pycharm2020.2 配置使用的方法详解
Sep 16 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 Python
python查看文件大小和文件夹内容的方法
Jul 08 #Python
python 搜索大文件的实例代码
Jul 08 #Python
代码实例讲解python3的编码问题
Jul 08 #Python
Python参数类型以及常见的坑详解
Jul 08 #Python
python里运用私有属性和方法总结
Jul 08 #Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 #Python
python字符串查找函数的用法详解
Jul 08 #Python
You might like
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
关于svn冲突的解决方法
2013/06/21 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
javascript 实现map集合
2015/04/03 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
Python原始字符串(raw strings)用法实例
2014/10/13 Python
python 多个参数不为空校验方法
2019/02/14 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
python构造函数init实例方法解析
2020/01/19 Python
python实现人机猜拳小游戏
2020/02/03 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
python程序如何进行保存
2020/07/03 Python
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
为什么要有struct关键字
2012/05/08 面试题
我的动漫时代的创业计划书范文
2014/01/27 职场文书
保护环境建议书300字
2014/05/13 职场文书
邀请函样本
2015/02/02 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书
投诉书格式范本
2015/07/02 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书