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的Django框架下搭建的BLOG添加RSS功能的教程
Apr 08 Python
深入理解python函数递归和生成器
Jun 06 Python
python flask实现分页效果
Jun 27 Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 Python
Python基础教程之内置函数locals()和globals()用法分析
Mar 16 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
在python中获取div的文本内容并和想定结果进行对比详解
Jan 02 Python
Python实现图片添加文字
Nov 26 Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 Python
Python tkinter模版代码实例
Feb 05 Python
基于django micro搭建网站实现加水印功能
May 22 Python
Python通过len函数返回对象长度
Oct 22 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 第三节 变量介绍
2012/04/28 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
在Python中使用第三方模块的教程
2015/04/27 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
django+mysql的使用示例
2018/11/23 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
python实现大文本文件分割
2019/07/22 Python
Python实现语音识别和语音合成功能
2019/09/20 Python
python基于event实现线程间通信控制
2020/01/13 Python
python 基于opencv操作摄像头
2020/12/24 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
《狐假虎威》教学反思
2014/02/07 职场文书
捐赠仪式主持词
2014/03/19 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
车辆年检委托书范本
2014/10/14 职场文书
岗位聘任协议书
2015/09/21 职场文书
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js