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的身份证号码自动生成程序
Aug 15 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
Python查找第n个子串的技巧分享
Jun 27 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
pytorch简介
Nov 11 Python
python编写扎金花小程序的实例代码
Feb 23 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 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
生成静态页面的php函数,php爱好者站推荐
2007/03/19 PHP
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
jQuery之选择组件的深入解析
2013/06/19 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
详解Python if-elif-else知识点
2018/06/11 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
Python谱减法语音降噪实例
2019/12/18 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
客户代表自我评价范例
2013/09/24 职场文书
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
销售会计岗位职责
2014/03/15 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
ubuntu下常用apt命令介绍
2022/06/05 Servers