python实现TCP文件传输


Posted in Python onMarch 20, 2020

前几天已经讲过了UDP协议下大文件传输的python实现代码,今天再实现TCP协议下大文件传输的python实现代码。
TCP和UDP的实现过程还是比较不一样的。

实现代码:

服务端:

import socket
import time

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('127.0.0.1',9999))
s.listen(5)
print('Waiting for connection...')

while True:
 sock,addr = s.accept()
 print('Accept new connection from %s:%s...' % addr)
 if count == 0:
  data1 = sock.recv(1024)
  print(str(data1))
  file_total_size = int(data1.decode())
  received_size = 0
  sock.send('received'.encode())
  data = sock.recv(1024)
  filepath = str(data.decode())
  f = open(filepath, 'wb')
 while received_size < file_total_size:
  data = sock.recv(1024)
  f.write(data)
  received_size += len(data)
  print('已接收 ',received_size,' Byte')
 data = sock.recv(1024)
 if data == b'end':
  break
  
f.close()
s.close()

客户端:

import socket
import os
import time
filename = input('please enter the filename you want to send:\n')
filesize = str(os.path.getsize(filename))
fname1, fname2 = os.path.split(filename)
client_addr = ('127.0.0.1',9999)
f = open(filename,'rb')
count = 0
flag = 1
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#建立连接:
s.connect(('127.0.0.1', 9999))
while True:
 if count == 0:
  s.send(filesize.encode())
  start = time.time()
  s.recv(1024)
  s.send(fname2.encode())
 for line in f:
  s.send(line)
  print('sending...')
 s.send(b'end')
 break

s.close
end = time.time()
print('cost' + str(round(end - start, 2)) + 's')

运行截图:

服务器端:

python实现TCP文件传输

客户端:

python实现TCP文件传输

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中执行shell命令的几个方法小结
Sep 18 Python
Python基于pygame模块播放MP3的方法示例
Sep 30 Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
Python 将pdf转成图片的方法
Apr 23 Python
python使用opencv实现马赛克效果示例
Sep 28 Python
利用pytorch实现对CIFAR-10数据集的分类
Jan 14 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
使用python自动追踪你的快递(物流推送邮箱)
Mar 17 Python
Django nginx配置实现过程详解
Sep 10 Python
详解Pycharm第三方库的安装及使用方法
Dec 29 Python
使用Django的JsonResponse返回数据的实现
Jan 15 Python
python实现FTP循环上传文件
Mar 20 #Python
python实现ftp文件传输功能
Mar 20 #Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
Mar 20 #Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 #Python
python实现ftp文件传输系统(案例分析)
Mar 20 #Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 #Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 #Python
You might like
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
php简单的会话类代码
2011/08/08 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
js模拟类继承小例子
2010/07/17 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
python黑魔法之参数传递
2016/02/12 Python
详解django中自定义标签和过滤器
2017/07/03 Python
Python列表(List)知识点总结
2019/02/18 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
2020/06/02 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
软件测试常见笔试题
2012/02/04 面试题
大学生求职简历的自我评价
2013/10/21 职场文书
公司人力资源的自我评价
2014/01/02 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书