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中的lambda表达式用法详解
Jun 22 Python
深入理解python对json的操作总结
Jan 05 Python
python类的继承实例详解
Mar 30 Python
python随机取list中的元素方法
Apr 08 Python
python numpy 显示图像阵列的实例
Jul 02 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
python pygame模块编写飞机大战
Nov 20 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
浅谈Python type的使用
Nov 19 Python
python实现指定ip端口扫描方式
Dec 17 Python
详解用 python-docx 创建浮动图片
Jan 24 Python
python热力图实现简单方法
Jan 29 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学习笔记之三 数据库基本操作
2011/01/17 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
PHP模块化安装教程
2016/06/01 PHP
Yii全局函数用法示例
2017/01/22 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
js电话号码验证方法
2015/09/28 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
flask入门之文件上传与邮件发送示例
2018/07/18 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
OpenCV 边缘检测
2019/07/10 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
党校个人自我鉴定范文
2014/03/28 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
股份转让协议书范本
2015/01/27 职场文书
阿甘正传观后感
2015/06/01 职场文书
入党自传范文2015
2015/06/26 职场文书
ant design vue的form表单取值方法
2022/06/01 Vue.js